Skip to content

如何设置 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.tomlsetup.pyrequirements.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 文件:

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 应用程序中的每个 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.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