LangChain 1.0+ 第三篇:LangSmith------给 AI 应用装上监控台
摘要:AI 应用出问题不能靠猜。LangSmith 是 LangChain 官方调试监控平台,本文讲清 4 个环境变量接入方式、三大功能板块,以及用 run_name/tags/metadata 给每次调用打标签定位性能与报错。
引子:模型"答错了"到底错在哪一步
你是不是也遇到过这种情况:Agent 应用跑着跑着突然变慢、回答驴唇不对马嘴,你打开代码逐行看也找不到问题------因为问题根本不在这段代码里,而在"模型接收了什么提示词、返回了什么内容、哪一步耗了最多 Token"这些你看不见的调用过程里。
\[LangChain 1.0+ 入门:从只会调API到搭出AI应用] 我们搭通了模型调用,\[LangChain 1.0+ 第二篇:Prompt、结构化输出与 LCEL 组件组合] 学会了串组件。这篇引入 LangChain 官方生态里的"监控台" LangSmith:让每次模型调用都有迹可循,出问题能直接定位到具体步骤。
一、LangSmith 是什么
结论:LangSmith 是 LangChain 生态中专用于 LLM 应用调试、监控、评估和管理的平台 ,官方地址 smith.langchain.com/。
它解决四类问题:
| 能力 | 作用 |
|---|---|
| 追踪 Tracing | 记录每次 LLM 调用的详细信息(Prompt、返回、Token 数、节点耗时) |
| 监控 Monitoring | 实时看应用性能:Token 消耗趋势、QPS、错误率、平均延迟、成本预估 |
| 调试 Debug | 排查 Bug 和优化性能 |
| 评估 Evaluate | 系统化测试 LLM 应用(新旧版本对比) |
一句话:你把应用跑起来,LangSmith 把你"看不到的调用过程"全部记录下来,还能可视化。
二、三大功能板块
1. 核心应用与开发
- Tracing(追踪):最核心功能,完整记录每一次调用链路(Trace)。Agent/RAG 变慢或报错时,点进项目就能看到每一步 Prompt、模型返回、Token 消耗、节点耗时,方便排查和优化。
- Monitoring(监控):生产环境可视化看板,宏观观察 Token 趋势、QPS、错误率、延迟与成本。
- Datasets & Experiments(数据集与实验):把真实输入和边界情况存为数据集,修改 Prompt 或换模型后跑自动化对比测试,直观看出新旧版本差异。
- Evaluators(评估器):配置基于规则(关键词)或基于模型(LLM-as-a-judge)的自动评分,如答案相关性、是否幻觉。
- Annotation Queues(标注队列):人工打分、纠正回答、贴标签,产出的高质量标注数据可用于微调模型或当测试集。
2. 提示词与调试工具
- Prompts(提示词管理):"提示词版的 GitHub",Prompt 从代码中解耦,云端管理、版本控制(v1/v2)、代码里动态拉取、团队协作分享。
- Playground(演练场):网页端模型交互界面,不用写代码就能选模型、调 Prompt,一键存回 Prompts 仓库。
- Studio(工作室):与 LangGraph 深度集成,可视化状态机流转,支持"暂停节点→改数据→继续执行",调试复杂 Agent 的利器。
- Context Hub(上下文中心):管理多项目复用的公共上下文模板、全局变量、系统预设提示。
3. 部署与沙盒
- Deployments(部署):一键把 LangChain/LangGraph 应用部署为线上 API(依托 LangGraph Cloud),自带高并发、队列、状态持久化。
- Sandboxes(沙盒):轻量在线运行测试环境,不污染生产环境。
学习建议 :现阶段重点用 Tracing (看调用细节)和 Playground(调提示词);应用复杂化(RAG、多 Agent)后再引入 Datasets 评估和 Studio 可视化调试。
三、准备账号与 API Key
1. 注册登录
访问 smith.langchain.com/ 注册或登录。
2. 获取 API Key
打开设置 → 创建 API Key → 复制保存。注意:Key 只在弹窗显示一次,关掉后官网无法再查看,务必妥善保存。
3. 配置环境变量
在 .env 中添加四个变量:
python
# 是否启用 Langsmith 监控
LANGSMITH_TRACING=true
# LangSmith 监控 WebUI 地址
LANGSMITH_ENDPOINT=https://api.smith.langchain.com
# 创建的 API_KEY
LANGSMITH_API_KEY=<YOUR_API_KEY>
# 项目名:可在 LangSmith 页面按名称查看对应的运行记录
LANGSMITH_PROJECT="pr-clear-harmony-32"
四、开始追踪:跑一段代码看监控台
结论:加上环境变量后用 load_dotenv() 加载,跑任意 LangChain 程序,LangSmith 自动记录并同步运行指标。
1. 运行一段普通调用
python
import os
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
# override=True:.env 中的值优先
load_dotenv(override=True)
model = ChatDeepSeek(
api_key=os.getenv("DEEPSEEK_API_KEY"),
api_base=os.getenv("DEEPSEEK_BASE_URL"),
model_name="deepseek-v4-flash"
)
print(model.invoke("你好"))
2. 用 config 给调用"打标签"
在调用时传 config,run_name/tags/metadata 会显示在 LangSmith 的 Trace 里,便于分类和检索:
python
config = {
"run_name": "joke_generation", # 本次运行名,LangSmith 中可见
"tags": ["my_tag1", "my_tag2"], # 打标签便于分类查找
"metadata": { # 记录业务信息,如用户/会话 ID
"user_id": "shkstart",
"session_id": "sess_123"
},
"configurable": { # 运行时临时调整模型参数
"model": "deepseek-v4-pro",
"temperature": 0.7,
"max_tokens": 1000
}
}
response = model.invoke("1 + 2 = ?", config=config)
3. 查看监控界面
打开 LangSmith WebUI → Tracing 界面,可以看到以 LANGSMITH_PROJECT 命名的项目。点击任意条目进入详情:Prompt、模型返回、Token 消耗、各节点耗时一目了然;下方还有大量指标报表可切换。
五、实践要点总结
- 用
run_name给每次运行命名、用tags/metadata打标签,监控台才能"检索"而不是"翻找"。 - 出问题时先看 Tracing 里每一步的 Prompt 和耗时,往往比读代码更快定位。
- 改了 Prompt 或换模型后,用 Datasets & Experiments 跑对比,别靠感觉判断"有没有变好"。
- 上线后盯 Monitoring 的 Token 消耗、错误率、延迟,控制成本与稳定性。
configurable字段需在init_chat_model里声明(如configurable_fields=("model", "temperature", ...))才可运行时调整。
下一篇讲多轮对话的地基:Message 消息与提示词模板,告诉你模型"失忆"时程序该怎样替它记住上下文。