如何设置 LangGraph 应用程序以进行部署¶
LangGraph 应用程序必须配置一个 LangGraph API 配置文件,才能部署到 LangGraph Cloud(或进行自托管)。本指南讨论了使用 pyproject.toml 定义您的包依赖项以设置 LangGraph 应用程序的基本步骤。
此操作指南基于 这个仓库,您可以通过它来了解如何设置 LangGraph 应用程序以进行部署。
使用 requirements.txt 进行设置
如果您更喜欢使用 requirements.txt 来管理依赖项,请查看 这个操作指南。
使用 Monorepo 进行设置
如果您有兴趣在 Monorepo 中部署图,请查看 这个 仓库,以获取如何操作的示例。
最终的仓库结构看起来类似于以下内容:
my-app/
├── my_agent # 所有项目代码都在这里
│ ├── utils # 图的工具
│ │ ├── __init__.py
│ │ ├── tools.py # 图的工具
│ │ ├── nodes.py # 图的节点函数
│ │ └── state.py # 图的状态定义
│ ├── __init__.py
│ └── agent.py # 构建图的代码
├── .env # 环境变量
├── langgraph.json # LangGraph 的配置文件
└── pyproject.toml # 项目的依赖项
在每一步之后,提供一个示例文件目录,以演示代码如何组织。
指定依赖项¶
依赖项可以选择在以下文件之一中指定: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
示例 pyproject.toml 文件:
[tool.poetry]
name = "my-agent"
version = "0.0.1"
description = "为 LangGraph 云构建的优秀代理。"
authors = ["Polly the parrot <1223+polly@users.noreply.github.com>"]
license = "MIT"
readme = "README.md"
[tool.poetry.dependencies]
python = ">=3.9.0,<3.13"
langgraph = "^0.2.0"
langchain-fireworks = "^0.1.3"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
示例文件目录:
指定环境变量¶
环境变量可以选择在一个文件中指定(例如 .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 # 图的状态定义
│ ├── __init__.py
│ └── agent.py # 构建图的代码
├── .env
└── pyproject.toml
创建 LangGraph API 配置¶
创建一个名为 langgraph.json 的 LangGraph API 配置文件。有关配置文件中每个键的详细说明,请参阅 LangGraph CLI 参考。
示例 langgraph.json 文件:
请注意,CompiledGraph 的变量名出现在顶级 graphs 键中每个子键值的末尾(即 :<variable_name>)。
配置位置
LangGraph API 配置文件必须放置在与包含编译图和相关依赖项的 Python 文件相同级别或更高的目录中。
示例文件目录:
my-app/
├── my_agent # 所有项目代码都在这里
│ ├── utils # 图的工具
│ │ ├── __init__.py
│ │ ├── tools.py # 图的工具
│ │ ├── nodes.py # 图的节点函数
│ │ └── state.py # 图的状态定义
│ ├── __init__.py
│ └── agent.py # 构建图的代码
├── .env # 环境变量
├── langgraph.json # LangGraph 的配置文件
└── pyproject.toml # 项目的依赖项
下一步¶
在您设置好项目并将其放置在 GitHub 仓库中后,是时候 部署您的应用 了。