如何使用 requirements.txt 设置 LangGraph 应用程序¶
LangGraph 应用程序必须通过LangGraph 配置文件进行配置,才能部署到 LangGraph 平台(或进行自托管)。本操作指南讨论了使用requirements.txt
指定项目依赖项来设置 LangGraph 应用程序以进行部署的基本步骤。
本演练基于此存储库,您可以尝试使用它来了解更多关于如何设置 LangGraph 应用程序以进行部署的信息。
使用 pyproject.toml 进行设置
如果您倾向于使用 poetry 进行依赖管理,请查看关于为 LangGraph 平台使用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 配置文件中指定依赖项。
以下依赖项将包含在镜像中,您也可以在代码中使用它们,只要版本范围兼容即可。
langgraph>=0.3.27
langgraph-sdk>=0.1.66
langgraph-checkpoint>=2.0.23
langchain-core>=0.2.38
langsmith>=0.1.63
orjson>=3.9.7,<3.10.17
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>=24.1.0
cloudpickle>=3.0.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 应用程序中的每个CompiledStateGraph 的变量名。这些变量名将在稍后创建LangGraph 配置文件时使用。
示例 agent.py
文件,展示了如何从您定义的其他模块导入(模块的代码未在此处显示,请参阅此存储库以查看它们的实现)
API 参考:StateGraph | END | START
# 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()
示例文件目录
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 配置文件¶
创建一个名为langgraph.json
的LangGraph 配置文件。请参阅LangGraph 配置文件参考,以获取配置文件 JSON 对象中每个键的详细解释。
langgraph.json
文件示例
{
"dependencies": ["./my_agent"],
"graphs": {
"agent": "./my_agent/agent.py:graph"
},
"env": ".env"
}
请注意,CompiledGraph
的变量名出现在顶级graphs
键中每个子键值的末尾(即:<variable_name>
)。
配置文件位置
LangGraph 配置文件必须放置在与包含已编译图及其相关依赖项的 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 存储库中后,是时候部署您的应用程序了。