如何设置 LangGraph 应用程序以进行部署¶
为了将 LangGraph 应用程序部署到 LangGraph Cloud(或进行自托管),必须使用 LangGraph API 配置文件 对其进行配置。本操作指南将讨论使用 requirements.txt
指定项目依赖项来设置 LangGraph 应用程序以进行部署的基本步骤。
本演练基于 此仓库,你可以对其进行操作,以了解更多关于如何设置 LangGraph 应用程序进行部署的信息。
使用 pyproject.toml 进行设置
如果你更喜欢使用 Poetry 进行依赖项管理,请查看关于在 LangGraph Cloud 中使用 pyproject.toml
的 本操作指南。
使用单仓库进行设置
如果你有兴趣部署位于单仓库内的图,请查看 此 仓库以获取相关示例。
最终的仓库结构大致如下:
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.4.0
langgraph-sdk>=0.1.53
langgraph-checkpoint>=2.0.15,<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,<2.2.0
uvloop>=0.18.0
httptools>=0.5.0
jsonschema-rs>=0.20.0
structlog>=23.1.0
示例 requirements.txt
文件:
示例文件目录:
指定环境变量¶
可以选择在文件(例如 .env
)中指定环境变量。请参阅环境变量参考,为部署配置其他变量。
示例 .env
文件:
示例文件目录:
定义图¶
实现你的图!图可以在单个文件或多个文件中定义。记录要包含在 LangGraph 应用程序中的每个 CompiledGraph 的变量名。这些变量名将在创建 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 配置文件。有关配置文件 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 仓库中后,就该部署你的应用程序了。