跳到正文

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

为了部署到 LangGraph Cloud(或自行托管),LangGraph 应用必须使用 LangGraph API 配置文件进行配置。本操作指南讨论了使用 pyproject.toml 定义包依赖项来设置 LangGraph 应用进行部署的基本步骤。

本演练基于此仓库,您可以试用它以详细了解如何设置用于部署的 LangGraph 应用。

使用 requirements.txt 进行设置

如果您更喜欢使用 requirements.txt 进行依赖管理,请查看本操作指南

使用 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
   ├── __init__.py
   └── agent.py # code for constructing your graph
├── .env # environment variables
├── langgraph.json  # configuration file for LangGraph
└── pyproject.toml # dependencies for your project

每一步之后,都会提供一个示例文件目录,以演示如何组织代码。

指定依赖项

依赖项可以选择在以下文件之一中指定: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

pyproject.toml 文件示例

[tool.poetry]
name = "my-agent"
version = "0.0.1"
description = "An excellent agent build for LangGraph cloud."
authors = ["Polly the parrot <1223+polly@users.noreply.github.com>"]
license = "MIT"
readme = "README.md"

[tool.poetry.dependencies]
python = ">=3.9"
langgraph = "^0.2.0"
langchain-fireworks = "^0.1.3"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

示例文件目录

my-app/
└── pyproject.toml   # Python packages required for your graph

指定环境变量

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

.env 文件示例

MY_ENV_VAR_1=foo
MY_ENV_VAR_2=bar
FIREWORKS_API_KEY=key

示例文件目录

my-app/
├── .env             # file with environment variables
└── pyproject.toml

定义图

实现您的图!图可以定义在单个文件或多个文件中。记下将包含在 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
   ├── __init__.py
   └── agent.py # code for constructing your graph
├── .env
└── pyproject.toml

创建 LangGraph API 配置

创建一个名为 langgraph.json LangGraph API 配置文件。请参阅 LangGraph CLI 参考,了解配置文件 JSON 对象中每个键的详细说明。

langgraph.json 文件示例

{
  "dependencies": ["."],
  "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
   ├── __init__.py
   └── agent.py # code for constructing your graph
├── .env # environment variables
├── langgraph.json  # configuration file for LangGraph
└── pyproject.toml # dependencies for your project

下一页

设置好项目并将其放入 GitHub 仓库后,就可以部署您的应用了。