Skip to content

如何为部署配置 LangGraph 应用程序

为了将 LangGraph 应用程序部署到 LangGraph 云(或自行托管),必须使用 LangGraph API 配置文件 进行配置。本教程将介绍使用 requirements.txt 指定项目依赖项来设置 LangGraph 应用程序的基本步骤。

本教程基于 此仓库,你可以通过它来学习如何为部署设置你的 LangGraph 应用程序。

使用 pyproject.toml 进行设置

如果你更喜欢使用 poetry 进行依赖管理,可以查看 此教程 了解如何使用 pyproject.toml 配置 LangGraph 云。

使用单仓库进行设置

如果你有兴趣部署位于单仓库内的图,可以查看 仓库以了解如何操作。

最终的仓库结构将类似于以下内容:

my-app/
├── my_agent # 所有项目代码都位于此处
   ├── utils # 图的工具
      ├── __init__.py
      ├── tools.py # 图的工具
      ├── nodes.py # 图的节点函数
      └── state.py # 图的状态定义
   ├── requirements.txt # 包依赖项
   ├── __init__.py
   └── agent.py # 构建图的代码
├── .env # 环境变量
└── langgraph.json # LangGraph 配置文件

每一步之后,都会提供一个示例文件目录,以展示代码如何组织。

指定依赖项

依赖项可以可选地在以下文件之一中指定:pyproject.tomlsetup.pyrequirements.txt。如果这些文件中没有一个被创建,则可以在稍后的 LangGraph API 配置文件中指定依赖项。

以下依赖项将包含在镜像中,您也可以在代码中使用它们,只要版本范围兼容:

langgraph>=0.2.56,<0.3.0
langgraph-checkpoint>=2.0.5,<3.0
langchain-core>=0.2.38,<0.4.0
langsmith>=0.1.63
orjson>=3.9.7
httpx>=0.25.0
tenacity>=8.0.0
uvicorn>=0.26.0
sse-starlette>=2.1.0
uvloop>=0.18.0
httptools>=0.5.0
jsonschema-rs>=0.16.3
croniter>=1.0.1
structlog>=23.1.0
redis>=5.0.0,<6.0.0

示例 requirements.txt 文件:

langgraph
langchain_anthropic
tavily-python
langchain_community
langchain_openai

示例文件目录:

my-app/
├── my_agent # 项目代码均位于此处
   └── requirements.txt # 包依赖项

指定环境变量

环境变量可选择性地在文件中指定(例如 .env)。请参阅环境变量参考以配置部署时的其他变量。

示例 .env 文件:

MY_ENV_VAR_1=foo
MY_ENV_VAR_2=bar
OPENAI_API_KEY=key

示例文件目录:

my-app/
├── my_agent # 所有项目代码都在此目录下
   └── requirements.txt # 包依赖
└── .env # 环境变量

定义图

实现您的图!图可以在单个文件中定义,也可以在多个文件中定义。请注意每个编译图的变量名,这些变量名将被包含在LangGraph应用程序中。这些变量名将在稍后创建LangGraph API配置文件时使用。

示例agent.py文件,展示了如何从您定义的其他模块中导入(此处未显示模块代码,请参见此仓库查看其实现):

# my_agent/agent.py
from typing import Literal
from typing_extensions import TypedDict

from langgraph.graph import StateGraph, END, START
from my_agent.utils.nodes import call_model, should_continue, tool_node # 导入节点
from my_agent.utils.state import AgentState # 导入状态

# 定义配置
class GraphConfig(TypedDict):
    model_name: Literal["anthropic", "openai"]

workflow = StateGraph(AgentState, config_schema=GraphConfig)
workflow.add_node("agent", call_model)
workflow.add_node("action", tool_node)
workflow.add_edge(START, "agent")
workflow.add_conditional_edges(
    "agent",
    should_continue,
    {
        "continue": "action",
        "end": END,
    },
)
workflow.add_edge("action", "agent")

graph = workflow.compile()

API Reference: StateGraph | END | START

CompiledGraph分配给变量

LangGraph Cloud的构建过程要求CompiledGraph对象被分配给Python模块顶级的一个变量(或者,您可以提供创建图的函数)。

示例文件目录:

my-app/
├── my_agent # 所有项目代码都在这里
   ├── utils # 用于您的图的工具
      ├── __init__.py
      ├── tools.py # 您图的工具
      ├── nodes.py # 您图的节点函数
      └── state.py # 您图的状态定义
   ├── requirements.txt # 包依赖
   ├── __init__.py
   └── agent.py # 构建您的图的代码
└── .env # 环境变量

创建LangGraph API配置

创建一个名为langgraph.jsonLangGraph API配置文件。有关配置文件中JSON对象中每个键的详细说明,请参阅LangGraph CLI参考

示例langgraph.json文件:

{
  "dependencies": ["./my_agent"],
  "graphs": {
    "agent": "./my_agent/agent.py:graph"
  },
  "env": ".env"
}

请注意,CompiledGraph变量名出现在顶级键graphs下每个子键值的末尾(即:<variable_name>)。

配置文件位置

LangGraph API配置文件必须放置在包含编译图和相关依赖项的Python文件所在的同一级别或更高级别目录中。

示例文件目录:

my-app/
├── my_agent # 所有项目代码均位于此处
   ├── utils # 图的工具
      ├── __init__.py
      ├── tools.py # 图的工具
      ├── nodes.py # 图的节点函数
      └── state.py # 图的状态定义
   ├── requirements.txt # 包依赖项
   ├── __init__.py
   └── agent.py # 构造图的代码
├── .env # 环境变量
└── langgraph.json # LangGraph配置文件

下一步

在设置好项目并将它放置在 GitHub 仓库中之后,是时候部署你的应用了。

Comments