LangSmith:LLM 应用调试与评估平台
1. 为什么需要 LangSmith?
随着 LLM 应用逐渐从 Demo 阶段进入生产环境,开发者会遇到越来越多的问题:
例如:
- 为什么模型回答错误?
- 是 Prompt 设计的问题吗?
- 是知识库检索到了错误内容?
- 是模型本身能力不足?
- Agent 是否调用了错误的工具?
- 为什么 Token 消耗突然增加?
- 哪一个步骤导致了请求变慢?
传统应用通常可以通过日志、链路追踪等方式定位问题,但是 LLM 应用存在大量动态行为:
- Prompt 会影响模型输出
- 检索内容会影响最终答案
- Agent 会根据上下文选择不同工具
- 同一个输入可能产生不同结果
因此,LLM 应用需要一种新的可观测能力:
LLM Observability(大模型可观测性)
它能够帮助开发者了解一次请求完整的执行过程,并分析:
- 输入是什么
- 模型为什么这样回答
- 中间步骤发生了什么
- 消耗了多少 Token
- 哪一步产生了问题
2. LangSmith 是什么?
LangChain 官方推出了 LangSmith,一个专门面向 LLM 应用的开发与生产管理平台。
LangSmith 主要用于:
- Tracing(链路追踪)
- Debugging(调试)
- Evaluation(评估)
- Monitoring(生产监控)
简单来说:
LangSmith 就像 LLM 应用领域的 APM 平台,可以帮助开发者观察、调试和优化 Agent 应用。
3. LangSmith 核心能力
3.1 Trace 链路追踪
这是 LangSmith 最核心功能。
一次 Agent 请求:
用户请求 | Agent | +-- 思考 | +-- 查询数据库 | +-- 调用API | +-- 返回答案LangSmith 会记录完整执行链。如果最终回答错误,可以通过 Trace 快速定位:开发者可以看到:
- 模型输入
- 模型输出
- Prompt是什么
- Token 消耗 多少
- 延迟 时间
- 中间的步骤
- Tool调用结果如何
开始体验
在官网注册账号并登陆:https://smith.langchain.com/
创建一个API Key
保存 API Key,后续项目中需要使用。
测试代码
创建 Python 项目,并安装依赖:
pip install -U langchain # langchain和openai整合包 pip install -U langchain-openai # langchain和deepseek的整合包 pip install -U langchain-deepseek # 读取.env 文件,并将其加载到系统的环境变量(os.environ)中。 pip install -U python-dotenv项目根目录创建.env文件:
# deepseek的apikey DEEPSEEK_API_KEY=sk-xxxxxxxxx DEEPSEEK_BASE_URL=https://api.deepseek.com #langchain-core已经依赖了langsmith #是否启用TRACING LANGSMITH_TRACING=true #langsmith的地址 LANGSMITH_ENDPOINT=https://api.smith.langchain.com LANGSMITH_API_KEY=xxxxx #自己取一个项目名字 LANGSMITH_PROJECT=langsmith-demo测试代码如下
importosfromdotenvimportload_dotenvfromlangchain.chat_modelsimportinit_chat_model# 将.env文件中的变量加载为环境变量load_dotenv(override=True)DEEPSEEK_API_KEY=os.getenv("DEEPSEEK_API_KEY")DEEPSEEK_BASE_URL=os.getenv("DEEPSEEK_BASE_URL")# 初始化聊天模型model=init_chat_model(model="deepseek-v4-flash",model_provider="deepseek",api_key=DEEPSEEK_API_KEY,base_url=DEEPSEEK_BASE_URL)# 调用一次模型print(model.invoke("你好"))查看Tracing链接追踪
点击Tracing
查看链路详情
3.2 Monitoring:生产监控
Tracing 主要用于查看单次请求。而 Monitoring 更关注线上整体运行情况。可以用来查看运行报表,此处提供了大量指标的报表用于分析查看
3.3. Evaluation:为什么需要评估?
LLM 最大问题:同一个输入:可能产生不同输出。
如果全都需要人工进行测试,那就成本比较高了,所以我们需要自动评估。
LangSmith Evaluation 基本模型如下:
1. Dataset | | 2.Target Application | | 3.Evaluator | | 4. Score使用测试数据运行 Agent,再通过 Evaluator 对结果进行评分。
有这几个核心概念需要理解:
- Dataset 是测试样本
- Target 是被测试 Agent
- Evaluator 是评分器
- Judge Model 是评审模型
3.4. Dataset 数据集
评估首先需要测试数据。我们先简单准备一下
例如客服 Agent:
| 问题 | 标准答案 |
|---|---|
| 退款多久到账 | 3-5天 |
| 如何修改地址 | 联系客服 |
新增数据集
按照要求导入CSV或者JSONL文件
测试代码
importosfromdotenvimportload_dotenvfromlangchain.chat_modelsimportinit_chat_modelfromlangsmithimportClient# 将.env文件中的变量加载为环境变量load_dotenv(override=True)DEEPSEEK_API_KEY=os.getenv("DEEPSEEK_API_KEY")DEEPSEEK_BASE_URL=os.getenv("DEEPSEEK_BASE_URL")# 1. 初始化聊天模型model=init_chat_model(model="deepseek-v4-flash",model_provider="deepseek",api_key=DEEPSEEK_API_KEY,base_url=DEEPSEEK_BASE_URL)# 2. 定义了一个高级agentdefmy_agent(user_input):result=model.invoke(user_input)returnresult.content# 3.用来测试my_agentdeftarget(inputs):print(inputs)returnmy_agent(inputs["inputs_1"])# 4. 用于评估的模型judge_model=init_chat_model(model="deepseek-v4-flash",model_provider="deepseek",api_key=DEEPSEEK_API_KEY,base_url=DEEPSEEK_BASE_URL)# 5. 定义一个评估器defcorrectness_evaluator(run,example):""" run: 被测试Agent的输出 example: Dataset中的标准答案 """question=example.inputs["inputs_1"]expected=example.outputs["outputs_1"]actual=run.outputs["output"]prompt=f""" 你是一个专业评测员。 判断AI回答是否正确。 问题:{question}标准答案:{expected}AI回答:{actual}请输出0-1之间的分数。 只返回数字。 """result=judge_model.invoke(prompt)score=float(result.content)return{"key":"correctness","score":score}# 进行测试client=Client()experiment_results=client.evaluate(target,data="客服话术",evaluators=[correctness_evaluator])foriteminexperiment_results._results:evaluation_results=item["evaluation_results"]["results"]forresultinevaluation_results:print(f"评估项:{result.key}, 分数:{result.score}")执行成功后多了一个evaluators
可以查看模型评估结果
3.5 Evaluators
除了通过代码定义 Evaluator 外,LangSmith 还支持在后台创建评估器。
这种方式适用于:
- 不希望每次修改评估规则都重新发布代码;
- 让测试人员或业务人员参与评估规则配置;
- 快速调整评分标准。
下面我们创建一个后台 Evaluator。
进入 LangSmith 控制台,选择Evaluators,新增一个评估器。
简单配置一下evaluator
完成配置后,一个评估器就创建完成。
接下来运行一次模型调用:
print(model.invoke("你好"))LangSmith 会自动捕获此次调用,并使用配置好的 Evaluator 进行评分。
最终可以在 Evaluation 页面查看评估结果。
4.关于LangSmith的费用
https://smith.langchain.com/o/b2f09aa3-1cce-4790-b756-cf34729b3822/settings/payments
当然LangSmith不是完全免费的。根据官网的的 Plans and pricing(套餐价格),主要分为Developer Free(免费版)、Plus(团队版)、Enterprise(企业版)。
其收费标准整理如下:
| 项目 | Developer Free 免费版 | Plus 团队版 | Enterprise 企业版 |
|---|---|---|---|
| 价格 | 免费 | $39 / seat / month(每用户/月) | 定制报价 |
| 适合 | 个人开发者 | 团队开发、Agent 部署 | 企业级应用 |
| Trace 数量 | 每月最多5,000 traces,超过后按量付费 | 每月最多10,000 traces,超过后按量付费 | 定制 |
| Seat(成员) | 1 个 | 可增加无限成员 | 无限 |
| Agent 数量 | 1 个 | 无限 | 定制 |
| Workspace | 1 个 | 最多 3 个 | 无限 |
| LCU(计算额度) | 5 LCU/月,之后按量付费 | 25 LCU/月,之后按量付费 | 定制 |
| 社区支持 | Community Forum | Email + Community Forum | SLA 支持 |
| 登录方式 | Google、GitHub、Discord | Google、GitHub、Discord | 自定义 SSO |
| Deployment | 不支持 | 支持(Small Serverless Deployment) | 定制 |
| Sandbox | 5 LCU/月,1 LSU/月,之后付费 | 同左 | 定制 |
| Engine | 需要升级 | 支持 | 定制 |
| Insights | 需要升级 | 需要升级 | 无限 |
| RBAC 权限控制 | 不支持 | 不支持 | 支持 |
| Team Training | 不支持 | 不支持 | 支持 |
5.总结
通过本文可以看到,LangSmith 主要解决了 LLM 应用开发中的三个问题:
Tracing(链路追踪)
帮助开发者查看一次请求完整的执行过程,包括 Prompt、模型输出、Token 消耗、Tool 调用以及每一步的耗时。
Evaluation(效果评估)
通过 Dataset 和 Evaluator,对 Agent 的输出进行自动化评估,帮助我们判断 Prompt 优化、模型更换或者流程调整后,效果是否真正提升。
Monitoring(生产监控)
帮助开发者观察线上 LLM 应用运行情况,包括请求量、延迟、错误以及资源消耗。
简单来说:
LangSmith 就像传统应用中的 APM 平台,只不过它面向的是 LLM 应用。