如何为部署设置 LangGraph 应用程序¶
LangGraph 应用程序必须使用 LangGraph API 配置文件 进行配置,才能部署到 LangGraph Cloud(或自托管)。本指南讨论了使用 requirements.txt 指定项目依赖项的基本步骤,以设置 LangGraph 应用程序进行部署。
此操作步骤基于 此仓库,您可以在此仓库中进行尝试,以了解如何设置您的 LangGraph 应用程序以进行部署。
使用 pyproject.toml 设置
如果您更喜欢使用 poetry 进行依赖管理,请查看 本指南,了解如何使用 pyproject.toml 进行 LangGraph Cloud 设置。
使用 Monorepo 设置
如果您对在 monorepo 中部署图形感兴趣,请查看 这个 仓库,以获取如何操作的示例。
最终的仓库结构将如下所示:
my-app/
├── my_agent # 所有项目代码位于此处
│ ├── utils # 图形的实用工具
│ │ ├── __init__.py
│ │ ├── tools.py # 图形工具
│ │ ├── nodes.py # 图形节点函数
│ │ └── state.py # 图形的状态定义
│ ├── requirements.txt # 包依赖
│ ├── __init__.py
│ └── agent.py # 构建图形的代码
├── .env # 环境变量
└── langgraph.json # LangGraph 的配置文件
每一步之后提供示例文件目录,以演示代码如何组织。
指定依赖项¶
依赖项可以选择性地在以下文件之一中指定:pyproject.toml、setup.py 或 requirements.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 文件:
示例文件目录:
指定环境变量¶
可以选择性地在文件中指定环境变量(例如 .env)。请参阅 环境变量参考,以配置部署的其他变量。
示例 .env 文件:
示例文件目录:
定义图形¶
实现您的图形!图形可以在一个文件或多个文件中定义。请注意,每个 CompiledGraph 的变量名称,以便包含在 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()
将 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.json 的 LangGraph API 配置文件。有关配置文件中每个键的详细解释,请参见 LangGraph CLI 参考。
示例 langgraph.json 文件:
{
"dependencies": ["./my_agent"],
"graphs": {
"agent": "./my_agent/agent.py:graph"
},
"env": ".env"
}
请注意,每个顶级 graphs 键的子键值末尾的 CompiledGraph 变量名称(即 :<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 仓库后,是时候 部署您的应用 了。