跳到内容

如何设置用于部署的 LangGraph 应用程序

LangGraph 应用程序必须配置一个 LangGraph API 配置文件 才能部署到 LangGraph Cloud(或自行托管)。本操作指南讨论了使用 requirements.txt 指定项目依赖项来设置 LangGraph 应用程序以进行部署的基本步骤。

本演练基于 此仓库,你可以通过它来了解如何设置用于部署的 LangGraph 应用程序。

使用 pyproject.toml 进行设置

如果你更喜欢使用 poetry 进行依赖管理,请查看 本操作指南,了解如何使用 pyproject.toml 进行 LangGraph Cloud 配置。

使用 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.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 # all project code lies within here
   └── requirements.txt # package dependencies

指定环境变量

环境变量可以选择在一个文件(例如 .env)中指定。请参阅 环境变量参考 以配置部署的其他变量。

示例 .env 文件

MY_ENV_VAR_1=foo
MY_ENV_VAR_2=bar
OPENAI_API_KEY=key

示例文件目录

my-app/
├── my_agent # all project code lies within here
   └── requirements.txt # package dependencies
└── .env # environment variables

定义图

实现你的图!图可以在单个文件或多个文件中定义。记下每个要包含在 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 # 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()

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.jsonLangGraph API 配置文件。请参阅 LangGraph CLI 参考,了解配置文件的 JSON 对象中每个键的详细说明。

示例 langgraph.json 文件

{
  "dependencies": ["./my_agent"],
  "graphs": {
    "agent": "./my_agent/agent.py:graph"
  },
  "env": ".env"
}

注意,CompiledGraph 的变量名出现在顶级 graphs 键下每个子键的值的末尾(即 :<变量名>)。

配置文件位置

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 仓库后,就可以 部署你的应用程序 了。