如何设置 LangGraph 应用程序以进行部署¶
为了部署到 LangGraph Cloud(或进行自托管),LangGraph 应用程序必须配置 LangGraph API 配置文件。本操作指南讨论了使用 requirements.txt
指定项目依赖项来设置 LangGraph 应用程序以进行部署的基本步骤。
本演练基于此仓库,您可以试用它以了解更多关于如何设置 LangGraph 应用程序以进行部署的信息。
使用 pyproject.toml 设置
如果您更喜欢使用 poetry 进行依赖项管理,请查看关于为 LangGraph Cloud 使用 pyproject.toml
的此操作指南。
使用 Monorepo 设置
如果您有兴趣部署位于 Monorepo 内的图,请查看此仓库,其中提供了一个关于如何执行此操作的示例。
最终的仓库结构将如下所示
my-app/
├── my_agent # all project code lies within here
│ ├── utils # utilities for your graph
│ │ ├── __init__.py
│ │ ├── tools.py # tools for your graph
│ │ ├── nodes.py # node functions for you graph
│ │ └── state.py # state definition of your graph
│ ├── requirements.txt # package dependencies
│ ├── __init__.py
│ └── agent.py # code for constructing your graph
├── .env # environment variables
└── langgraph.json # configuration file for 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
文件示例
示例文件目录
my-app/
├── my_agent # all project code lies within here
│ └── requirements.txt # package dependencies
指定环境变量¶
可以可选地在文件(例如 .env
)中指定环境变量。请参阅环境变量参考以配置部署的其他变量。
.env
文件示例
示例文件目录
my-app/
├── my_agent # all project code lies within here
│ └── requirements.txt # package dependencies
└── .env # environment variables
定义图¶
实现您的图!图可以在单个文件或多个文件中定义。记下每个要包含在 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 # import nodes
from my_agent.utils.state import AgentState # import state
# Define the config
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 参考:StateGraph | END | START
将 CompiledGraph
分配给变量
LangGraph Cloud 的构建过程要求将 CompiledGraph
对象分配给 Python 模块顶层的变量(或者,您可以提供创建图的函数)。
示例文件目录
my-app/
├── my_agent # all project code lies within here
│ ├── utils # utilities for your graph
│ │ ├── __init__.py
│ │ ├── tools.py # tools for your graph
│ │ ├── nodes.py # node functions for you graph
│ │ └── state.py # state definition of your graph
│ ├── requirements.txt # package dependencies
│ ├── __init__.py
│ └── agent.py # code for constructing your graph
└── .env # environment variables
创建 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 # all project code lies within here
│ ├── utils # utilities for your graph
│ │ ├── __init__.py
│ │ ├── tools.py # tools for your graph
│ │ ├── nodes.py # node functions for you graph
│ │ └── state.py # state definition of your graph
│ ├── requirements.txt # package dependencies
│ ├── __init__.py
│ └── agent.py # code for constructing your graph
├── .env # environment variables
└── langgraph.json # configuration file for LangGraph
下一步¶
在您设置项目并将其放置在 github 仓库中之后,就该部署您的应用程序了。