主题
应用结构
要在 LangSmith 上部署,应用必须由一个或多个图、一个配置文件(langgraph.json)、一个指定依赖项的文件,以及一个可选的、用于指定环境变量的 .env 文件组成。
本页说明 LangSmith 应用如何组织,以及如何提供部署所需的配置详情。
核心概念
要使用 LangSmith 部署,请提供以下信息:
TIP
框架无关
LangSmith Deployment 支持部署 LangGraph 图。然而,图的节点的实现可以包含任意代码。这意味着任何框架都可以在节点内实现并部署到 LangSmith Deployment 上。这让你能够在不使用额外 LangGraph OSS API 的情况下实现核心应用逻辑,同时仍使用 LangSmith 进行部署、扩缩容和可观测性。有关更多详情,请参阅将任意框架与 LangSmith Deployment 搭配使用。
文件结构
以下是 Python 和 JavaScript 应用的目录结构示例:
plaintext
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 your graph
│ │ └── state.py # state definition of your graph
│ ├── __init__.py
│ └── agent.py # code for constructing your graph
├── .env # environment variables
├── requirements.txt # package dependencies
└── langgraph.json # configuration file for LangGraphNOTE
应用的目录结构可能因所用的编程语言和包管理器而异。
配置文件
langgraph.json 文件是一个 JSON 文件,用于指定部署应用所需的依赖项、图、环境变量和其他设置。
有关 JSON 文件中所有支持的键的详情,请参阅 LangGraph 配置文件参考。
TIP
LangGraph CLI 默认使用当前目录中的配置文件 langgraph.json。
示例
- 依赖项涉及一个自定义本地包和
langchain_openai包。 - 将从文件
./your_package/your_file.py中加载一个图,使用变量agent。 - 环境变量从
.env文件加载。
json
{
"dependencies": [
"langchain_openai",
"./your_package"
],
"graphs": {
"my_agent": "./your_package/your_file.py:agent"
},
"env": "./.env"
}依赖
应用可能依赖其他 Python 包或 JavaScript 库(取决于编写该应用所用的编程语言)。
为了让依赖项正确设置,你通常需要指定以下信息:
- 目录中指定依赖项的文件(例如
requirements.txt、pyproject.toml或package.json)。 - 配置文件中的
dependencies键,用于指定运行应用所需的依赖项。 - 可以使用 LangGraph 配置文件中的
dockerfile_lines键来指定任何额外的二进制文件或系统库。
图
使用配置文件中的 graphs 键来指定已部署应用中可用的图。
你可以在配置文件中指定一个或多个图。每个图由唯一名称和一个路径标识,该路径指向 (1) 已编译的图,或 (2) 定义图的函数。
将任意框架与 LangSmith Deployment 搭配使用
虽然 LangSmith Deployment 要求应用以 LangGraph 图的形式构建,但该图中的各个节点可以包含任意代码。这意味着你可以在节点内使用任何框架或库,同时仍能受益于 LangSmith 的部署基础设施。
图结构充当部署接口,但你的核心应用逻辑可以使用最适合你需求的任何工具和框架。
要使用 LangSmith 部署,你需要:
- 一个 LangGraph 图结构:使用
StateGraph以及add_node和add_edge定义一个图。 - 具有任意逻辑的节点函数:你的节点函数可以调用任何框架或库。
- 一个已编译的图:编译该图以创建一个可部署的应用。
以下示例展示如何将你现有的应用逻辑包装到一个最小的 LangGraph 结构中:
python
from langgraph.graph import StateGraph, START, END
from typing import TypedDict
# Your existing application logic using any framework
from app_logic import process_data
from app_logic import fetch_data
class State(TypedDict):
input: str
result: str
def my_app_node(state: State) -> State:
"""Node containing arbitrary framework code."""
# Use any framework or library here
raw_data = fetch_data(state["input"])
processed = process_data(raw_data)
return {"result": processed}
# Define the graph structure
graph = StateGraph(State)
graph.add_node("process", my_app_node) # Add node with your logic
graph.add_edge(START, "process") # Connect start to your node
graph.add_edge("process", END) # Connect your node to end
# Compile for deployment
app = graph.compile()在此示例中,节点函数(Python 的 my_app_node 和 JavaScript 的 myAppNode)可以包含对任何框架或库的调用。LangGraph 结构只是提供部署接口和编排层。
有关端到端示例,请参阅 Google ADK 和 Claude Agent SDK、Strands、CrewAI 和 AutoGen 的部署指南。LangSmith 通过 deployments-wrap-sdk 添加了对 Google ADK 的支持,这是一个可扩展的包,用于包装智能体 SDK 以便在 LangSmith Deployment 上运行。
环境变量
如果你在本地处理已部署的 LangGraph 应用,可以在配置文件的 env 键中配置环境变量。
对于生产部署,你通常希望在部署环境中配置环境变量。