7.0 Deploy with LangSmith
本章介绍如何使用 LangSmith 部署和监控 LangChain/LangGraph 应用。
为什么选择 LangSmith?
LangSmith 是 LangChain 官方提供的一站式 LLM 应用开发平台,专为 Agent 应用设计:
| 传统方案 | LangSmith 方案 |
|---|---|
| 需要自行实现状态管理 | 内置持久化状态 |
| 需要自行实现检查点 | 自动检查点管理 |
| 需要集成多个监控工具 | 一体化可观测性 |
| 部署配置复杂 | 一键部署 |
核心能力
┌─────────────────────────────────────────────────────────┐
│ LangSmith Platform │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Deployment │ │ Observability │ │
│ │ │ │ │ │
│ │ • 一键部署 │ │ • 追踪 Tracing │ │
│ │ • 状态管理 │ │ • 监控 Monitor │ │
│ │ • API 访问 │ │ • 评估 Evaluate│ │
│ │ • 线程管理 │ │ • 告警 Alert │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘部署能力
- 一键部署:从 GitHub 仓库直接部署
- 持久化状态:自动管理对话状态和检查点
- 后台执行:支持长时间运行的 Agent 任务
- 内置 API:提供对话线程、检查点的标准 API
可观测性
- 追踪(Tracing):记录每个执行步骤的完整信息
- 调试(Debugging):分析工具调用和 LLM 决策点
- 评估(Evaluation):创建数据集,评估 Agent 性能
- 监控(Monitoring):实时追踪延迟、Token、成本
快速开始
1. 注册账户
访问 LangSmith 免费注册。
2. 配置环境
bash
# 启用追踪
export LANGSMITH_TRACING=true
export LANGSMITH_API_KEY=<your-api-key>
# 可选:指定项目
export LANGSMITH_PROJECT=my-agent-project3. 运行应用
无需修改代码,追踪自动启用:
python
from langchain.agents import create_agent
agent = create_agent(
"gpt-4o",
tools=[search_tool, calculator_tool]
)
# 自动追踪所有执行步骤
response = agent.invoke({
"messages": [{"role": "user", "content": "What is 25 * 4?"}]
})追踪结果自动显示在 LangSmith 控制台。
典型工作流
开发阶段 生产阶段
─────────────────────────────────────────────────
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ 本地开发 │ │ 部署应用 │
│ │ │ │
│ 启用追踪 │ │ LangSmith│
│ 调试问题 │ │ Platform │
└──────────┘ └──────────┘
│ │
▼ ▼
┌──────────┐ ┌──────────┐
│ 创建数据集│ │ 监控运行 │
│ │ │ │
│ 评估性能 │ │ 追踪问题 │
│ 优化 Agent│ │ 设置告警 │
└──────────┘ └──────────┘本章内容
| 章节 | 内容 | 核心概念 |
|---|---|---|
| 7.1 Deployment | 部署 | 一键部署、API 访问、线程管理、自托管 |
| 7.2 Observability | 可观测性 | 追踪、监控、评估、告警、自定义追踪 |
功能对照表
部署功能 (7.1)
| 功能 | 说明 |
|---|---|
| GitHub 集成 | 从仓库直接部署 |
| 环境变量 | 安全管理 API Keys |
| 对话线程 | 内置线程管理 API |
| LangGraph SDK | 客户端访问 API |
| 资源配置 | Small/Medium/Large |
| 自托管 | LangServe + Docker |
可观测性功能 (7.2)
| 功能 | 说明 |
|---|---|
| 自动追踪 | 无需改代码,自动启用 |
| 项目管理 | 按环境/功能/版本分组 |
| 标签和元数据 | 自定义注释便于筛选 |
| 监控仪表板 | 延迟、Token、成本、错误率 |
| @traceable | 自定义函数追踪 |
| 评估数据集 | 创建测试集评估性能 |
关键代码示例
部署后访问 Agent
python
from langgraph_sdk import get_client
client = get_client(
url="your-deployment-url",
api_key="your-langsmith-api-key"
)
# 创建对话线程
thread = await client.threads.create()
# 流式调用
async for chunk in client.runs.stream(
thread["thread_id"],
"agent",
input={"messages": [{"role": "human", "content": "Hello!"}]},
stream_mode="updates",
):
print(chunk.data)追踪与元数据
python
# 添加标签和元数据便于筛选
response = agent.invoke(
{"messages": [{"role": "user", "content": "Hello"}]},
config={
"tags": ["production", "v1.0"],
"metadata": {
"user_id": "user_123",
"session_id": "session_456"
}
}
)自定义追踪
python
from langsmith import traceable
@traceable
def my_custom_function(input_data):
"""自定义函数也会被追踪"""
result = process(input_data)
return result最佳实践
| 实践 | 说明 |
|---|---|
| 结构化项目命名 | <team>-<service>-<env> |
| 有意义的标签 | 版本、模型、任务类型 |
| 丰富的元数据 | 用户 ID、请求 ID、来源 |
| 敏感数据处理 | 对 PII 禁用追踪 |
| 环境隔离 | 开发/测试/生产分项目 |
学习路径
你在这里
│
▼
┌───────────────────────────────────────────────────┐
│ 7.0 Deploy with LangSmith (概述) │
└───────────────────────────────────────────────────┘
│
├─────────────────────┬─────────────────────────┤
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 7.1 部署 │ │ 7.2 可观测性 │
│ │ │ │
│ • 一键部署 │ │ • 追踪调试 │
│ • API 访问 │ │ • 监控告警 │
│ • 线程管理 │ │ • 评估测试 │
└──────────────┘ └──────────────┘准备好了吗?
让我们开始学习如何部署你的 LangChain 应用!
下一节:7.1 Deployment - 学习一键部署和 API 访问
下一节:7.1 Deployment