Skip to Content

21c - LangSmith 设置指南

本文是《AI Agent 实战手册》第 21 章第 3 节。 上一节:21b-可观测性平台对比 | 下一节:21d-Langfuse设置指南

⏱ 阅读时间:60 分钟 | 难度:⭐⭐⭐ 中级 | 前置知识:Python/TypeScript 基础、LLM 应用开发经验

概述

LangSmith 是 LangChain 团队打造的框架无关的 LLM 可观测性与评估平台,提供端到端的追踪、Prompt 管理、数据集评估和团队协作能力。本节将从零开始,逐步引导你完成 LangSmith 的账号注册、SDK 集成、Trace 配置、仪表板搭建、Prompt 版本管理、数据集评估工作流,以及与 LangGraph 多 Agent 系统的集成。


1. LangSmith 概览与定价

1.1 平台定位

LangSmith 是一个用于开发、调试和部署 AI Agent 与 LLM 应用的平台。它帮助开发者追踪请求、评估输出、测试 Prompt 并管理部署——所有功能集中在一个平台上。

工具推荐

工具用途价格适用场景
LangSmith Developer个人开发与调试免费(含 5,000 条 base traces/月)个人项目、原型验证
LangSmith Plus团队协作与生产监控$39/席位/月(含 10,000 条 base traces/月)中小团队、生产环境
LangSmith Enterprise企业级部署定制报价(支持自托管/混合部署)大型企业、合规要求高
LangSmith Startup Plan早期创业公司折扣价格(需申请)种子轮/A 轮创业公司

计费说明:超出免费额度后,按 $0.005/trace 计费。席位按月计费,trace 用量按月后付。Enterprise 计划按年开票。


2. 账号注册与 API Key 配置

操作步骤

步骤 1:注册 LangSmith 账号

访问 smith.langchain.com ,支持以下注册方式:

  • GitHub 账号登录
  • Discord 账号登录
  • 邮箱 + 密码注册(需验证邮箱)

步骤 2:创建 API Key

登录后,进入 Settings → API Keys,点击 Create API Key

1. 点击右上角头像 → Settings 2. 左侧菜单选择 "API Keys" 3. 点击 "Create API Key" 4. 为 Key 命名(如 "dev-local"、"production") 5. 复制生成的 Key(格式:lsv2_pt_xxxx...) 6. 妥善保存——Key 只显示一次

⚠️ 安全提示:API Key 应存储在环境变量或密钥管理服务中,切勿硬编码到代码或提交到 Git 仓库。

步骤 3:配置环境变量

Linux/macOS:

# 在 ~/.bashrc 或 ~/.zshrc 中添加 export LANGSMITH_TRACING=true export LANGSMITH_API_KEY="lsv2_pt_your_api_key_here" export LANGSMITH_PROJECT="my-first-project" # 可选:指定工作区(多工作区场景) export LANGSMITH_WORKSPACE_ID="your-workspace-id"

Windows PowerShell:

$env:LANGSMITH_TRACING = "true" $env:LANGSMITH_API_KEY = "lsv2_pt_your_api_key_here" $env:LANGSMITH_PROJECT = "my-first-project"

.env 文件(推荐用于项目):

LANGSMITH_TRACING=true LANGSMITH_API_KEY=lsv2_pt_your_api_key_here LANGSMITH_PROJECT=my-first-project LANGSMITH_ENDPOINT=https://api.smith.langchain.com

提示词模板

你是一个 DevOps 工程师,请帮我生成一个安全的 LangSmith 环境变量配置方案: 项目类型:[Web 应用 / CLI 工具 / 微服务] 部署环境:[本地开发 / Docker / Kubernetes / Serverless] 密钥管理方式:[.env 文件 / AWS Secrets Manager / Vault / 环境变量] 要求: 1. 区分开发和生产环境的配置 2. 确保 API Key 不会泄露到版本控制 3. 包含 .gitignore 配置

3. Python SDK 安装与集成

操作步骤

步骤 1:安装 SDK

# 使用 pip pip install langsmith # 使用 poetry poetry add langsmith # 如果同时使用 LangChain pip install langsmith langchain langchain-openai

步骤 2:验证安装

import langsmith print(langsmith.__version__) # 应输出 0.3.x 或更高版本 # 验证连接 client = langsmith.Client() print(client.info) # 应返回服务器信息

步骤 3:使用 @traceable 装饰器追踪函数

@traceable 是 LangSmith Python SDK 的核心追踪机制,可以装饰任意函数:

import langsmith as ls from langsmith.wrappers import wrap_openai import openai # 包装 OpenAI 客户端,自动追踪所有 LLM 调用 client = wrap_openai(openai.Client()) @ls.traceable(run_type="tool", name="检索上下文") def retrieve_context(question: str) -> str: """模拟文档检索""" # 实际项目中这里会调用向量数据库 return "LangSmith 是 LangChain 团队开发的可观测性平台..." @ls.traceable(run_type="chain", name="RAG 问答管线") def rag_pipeline(question: str) -> str: context = retrieve_context(question) messages = [ {"role": "system", "content": f"基于以下上下文回答问题:\n{context}"}, {"role": "user", "content": question} ] response = client.chat.completions.create( model="gpt-4.1-mini", messages=messages ) return response.choices[0].message.content # 执行——trace 自动上报到 LangSmith result = rag_pipeline("什么是 LangSmith?") print(result)

步骤 4:使用 trace 上下文管理器(更灵活的方式)

import langsmith as ls from langsmith.wrappers import wrap_openai import openai client = wrap_openai(openai.Client()) def chat_pipeline(question: str) -> str: context = "LangSmith 提供端到端的 LLM 可观测性..." messages = [ {"role": "system", "content": f"上下文:{context}"}, {"role": "user", "content": question} ] response = client.chat.completions.create( model="gpt-4.1-mini", messages=messages ) return response.choices[0].message.content # 使用上下文管理器手动控制 trace app_inputs = {"input": "LangSmith 有什么功能?"} with ls.trace("Chat Pipeline", "chain", project_name="my-project", inputs=app_inputs) as rt: output = chat_pipeline("LangSmith 有什么功能?") rt.end(outputs={"output": output})

步骤 5:为 trace 添加元数据和标签

@ls.traceable( run_type="chain", name="客服问答", tags=["production", "customer-service"], metadata={"version": "2.1", "team": "support"} ) def customer_service_agent(query: str, user_id: str) -> str: # 元数据和标签会显示在 LangSmith UI 中,方便过滤和分析 ...

4. TypeScript/JavaScript SDK 安装与集成

操作步骤

步骤 1:安装 SDK

# npm npm install langsmith # pnpm pnpm add langsmith # yarn yarn add langsmith # 如果同时使用 LangChain.js npm install langsmith @langchain/core @langchain/openai

步骤 2:使用 traceable 包装函数

import { traceable } from "langsmith/traceable"; import { wrapOpenAI } from "langsmith/wrappers"; import OpenAI from "openai"; // 包装 OpenAI 客户端 const client = wrapOpenAI(new OpenAI()); const retrieveContext = traceable( async (question: string): Promise<string> => { // 模拟检索 return "LangSmith 是一个 LLM 可观测性平台..."; }, { name: "检索上下文", run_type: "tool" } ); const ragPipeline = traceable( async (question: string): Promise<string> => { const context = await retrieveContext(question); const response = await client.chat.completions.create({ model: "gpt-4.1-mini", messages: [ { role: "system", content: `基于上下文回答:\n${context}` }, { role: "user", content: question }, ], }); return response.choices[0].message.content ?? ""; }, { name: "RAG 问答管线", run_type: "chain" } ); // 执行 const result = await ragPipeline("什么是 LangSmith?"); console.log(result);

步骤 3:在 Vercel AI SDK 中集成

import { AISDKExporter } from "langsmith/vercel"; import { streamText } from "ai"; import { openai } from "@ai-sdk/openai"; const result = await streamText({ model: openai("gpt-4.1-mini"), prompt: "用一句话解释 AgentOps", experimental_telemetry: AISDKExporter.getSettings({ runName: "Vercel AI 调用", metadata: { framework: "vercel-ai-sdk" }, }), });

5. Trace 配置详解

5.1 LangChain 应用的自动追踪

对于使用 LangChain/LangGraph 构建的应用,只需设置环境变量即可实现零代码追踪:

import os os.environ["LANGSMITH_TRACING"] = "true" os.environ["LANGSMITH_API_KEY"] = "lsv2_pt_xxx" os.environ["LANGSMITH_PROJECT"] = "my-langchain-app" # 所有 LangChain 调用自动追踪——无需额外代码 from langchain_openai import ChatOpenAI from langchain_core.prompts import ChatPromptTemplate llm = ChatOpenAI(model="gpt-4.1-mini") prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个有帮助的助手。"), ("user", "{input}") ]) chain = prompt | llm # 这个调用会自动生成完整的 trace response = chain.invoke({"input": "什么是 AgentOps?"})

5.2 非 LangChain 应用的手动追踪

对于不使用 LangChain 的应用,LangSmith 提供了多种追踪方式:

追踪方式适用场景侵入性灵活性
wrap_openaiOpenAI SDK 调用极低(一行代码)
@traceable 装饰器任意 Python 函数
traceable 包装器任意 JS/TS 函数
trace 上下文管理器代码块级追踪最高
RunTree API完全手动控制最高
OpenTelemetry已有 OTel 基础设施

5.3 OpenTelemetry 集成

LangSmith 支持端到端的 OpenTelemetry 集成,适合已有 OTel 基础设施的团队:

# 安装 OTel 依赖 # pip install opentelemetry-sdk opentelemetry-exporter-otlp from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter # 配置 LangSmith 作为 OTel 后端 exporter = OTLPSpanExporter( endpoint="https://api.smith.langchain.com/otel/v1/traces", headers={"x-api-key": "lsv2_pt_xxx"} ) provider = TracerProvider() provider.add_span_processor(BatchSpanProcessor(exporter)) trace.set_tracer_provider(provider)

5.4 Trace 采样与过滤

在高流量生产环境中,可以配置采样策略以控制成本:

import langsmith as ls import random # 方法 1:通过环境变量控制采样率 # 在代码中动态决定是否追踪 @ls.traceable(enabled=random.random() < 0.1) # 10% 采样率 def high_volume_endpoint(query: str) -> str: ... # 方法 2:按条件追踪 @ls.traceable def conditional_trace(query: str, debug: bool = False) -> str: if not debug: # 生产环境可通过 LANGSMITH_TRACING 环境变量全局控制 pass ...

6. 仪表板设置与项目管理

操作步骤

步骤 1:创建项目(Project)

项目是 LangSmith 中组织 trace 的基本单位:

1. 登录 LangSmith → 左侧菜单选择 "Projects" 2. 点击 "+ New Project" 3. 输入项目名称(如 "customer-service-bot") 4. 选择描述和标签 5. 点击 "Create"

也可以通过代码创建:

from langsmith import Client client = Client() # 创建新项目 client.create_project("customer-service-bot", description="客服机器人生产环境")

最佳实践:按环境和功能组织项目,如 chatbot-devchatbot-stagingchatbot-prod

步骤 2:配置预置仪表板

LangSmith 为每个项目自动创建预置仪表板,包含以下核心指标:

指标说明关注点
Trace Count追踪总数流量趋势
Error Rate错误率系统稳定性
Latency (P50/P95/P99)延迟百分位用户体验
Token UsageToken 消耗量成本控制
LLM Call CountLLM 调用次数使用模式
Feedback Score用户反馈分数输出质量

步骤 3:创建自定义仪表板

1. 进入项目 → 点击右上角 "Dashboard" 2. 点击 "Create Dashboard" 或 "Add Chart" 3. 选择图表类型(折线图、柱状图、数值卡片等) 4. 配置指标和过滤条件 5. 设置时间范围和刷新频率

自定义仪表板常用配置:

  • 成本监控面板:按模型、按用户、按功能的 Token 消耗趋势
  • 质量监控面板:评估分数趋势、幻觉率、用户满意度
  • 性能监控面板:P95 延迟、错误率、吞吐量

步骤 4:配置 Trace 过滤与搜索

LangSmith 支持强大的 trace 过滤功能:

常用过滤条件: - 按标签过滤:tag = "production" - 按元数据过滤:metadata.user_id = "user_123" - 按延迟过滤:latency > 5s - 按状态过滤:status = "error" - 按时间范围:last 24 hours / last 7 days - 按反馈分数:feedback.score < 0.5

7. Prompt 管理与版本控制

7.1 Prompt Hub 概述

LangSmith 的 Prompt Hub 允许你将 Prompt 与代码分离管理,支持版本控制、团队协作和 A/B 测试。

操作步骤

步骤 1:在 UI 中创建和管理 Prompt

1. 左侧菜单选择 "Prompts" 2. 点击 "+ New Prompt" 3. 输入 Prompt 名称(如 "customer-service-v1") 4. 编写 Prompt 模板内容 5. 设置模型参数(temperature、max_tokens 等) 6. 点击 "Save" 保存

步骤 2:通过 SDK 推送和拉取 Prompt

from langsmith import Client from langchain_core.prompts import ChatPromptTemplate client = Client() # 创建 Prompt 模板 prompt = ChatPromptTemplate.from_messages([ ("system", "你是一个专业的{role}。请用{language}回答用户问题。"), ("user", "{question}") ]) # 推送到 LangSmith Prompt Hub client.push_prompt("customer-service-prompt", object=prompt) # 从 Hub 拉取特定版本 prompt_v1 = client.pull_prompt("customer-service-prompt") # 拉取特定 commit prompt_specific = client.pull_prompt("customer-service-prompt:abc123")

步骤 3:在 Playground 中测试 Prompt

1. 进入 Prompts → 选择一个 Prompt 2. 点击 "Open in Playground" 3. 填入变量值(如 role="客服专家"、language="中文") 4. 选择模型(GPT-4、Claude 3.5 等) 5. 点击 "Run" 测试效果 6. 对比不同版本的输出质量 7. 满意后点击 "Commit" 保存新版本

提示词模板

请帮我设计一个 LangSmith Prompt 版本管理策略: 应用场景:[客服机器人 / 代码助手 / 数据分析] 团队规模:[1-3 人 / 5-10 人 / 10+ 人] 发布频率:[每天 / 每周 / 每月] 要求: 1. 定义 Prompt 命名规范(如 {team}-{function}-{version}) 2. 设计审批流程(谁可以推送到生产?) 3. 制定回滚策略(发现问题如何快速回退?) 4. 设置 A/B 测试方案(如何对比新旧版本效果?)

8. 数据集创建与评估工作流

8.1 数据集概念

LangSmith 中的数据集是输入-输出对的集合,用于系统化评估 LLM 应用的质量。数据集自动版本化——每次添加、更新或删除示例时,都会创建新版本。

操作步骤

步骤 1:创建数据集

from langsmith import Client client = Client() # 创建数据集 dataset = client.create_dataset( "customer-service-eval", description="客服机器人评估数据集" ) # 添加示例 examples = [ { "inputs": {"question": "如何退款?"}, "outputs": {"answer": "您可以在订单页面点击'申请退款'按钮..."} }, { "inputs": {"question": "配送需要多久?"}, "outputs": {"answer": "标准配送 3-5 个工作日,加急配送 1-2 个工作日..."} }, { "inputs": {"question": "可以修改收货地址吗?"}, "outputs": {"answer": "订单发货前可以修改,请进入订单详情页..."} } ] for example in examples: client.create_example( inputs=example["inputs"], outputs=example["outputs"], dataset_id=dataset.id )

步骤 2:从 Trace 创建数据集

1. 在 Traces 页面选择高质量的 trace 2. 点击 "Add to Dataset" 3. 选择目标数据集或创建新数据集 4. 确认输入和期望输出 5. 保存

最佳实践:定期从生产 trace 中筛选典型案例加入评估数据集,保持数据集与真实使用场景同步。

步骤 3:运行评估

from langsmith import Client, evaluate client = Client() # 定义要评估的目标函数 def my_agent(inputs: dict) -> dict: question = inputs["question"] # 调用你的 Agent 逻辑 answer = rag_pipeline(question) return {"answer": answer} # 定义评估器 def correctness_evaluator(run, example): """评估回答的正确性""" predicted = run.outputs.get("answer", "") expected = example.outputs.get("answer", "") # 简单的关键词匹配(实际项目中可用 LLM-as-Judge) score = 1.0 if any(kw in predicted for kw in expected.split(",")) else 0.0 return {"key": "correctness", "score": score} # 运行评估 results = evaluate( my_agent, data="customer-service-eval", evaluators=[correctness_evaluator], experiment_prefix="v2.1-gpt4-mini" )

步骤 4:使用 LLM-as-Judge 自动评估

from langsmith import evaluate from langchain_openai import ChatOpenAI # LangSmith 内置的 LLM 评估器 def llm_judge(run, example): """使用 LLM 作为评判者""" judge = ChatOpenAI(model="gpt-4.1-mini", temperature=0) prompt = f"""请评估以下回答的质量(0-1 分): 问题:{example.inputs['question']} 期望回答:{example.outputs['answer']} 实际回答:{run.outputs['answer']} 评分标准: - 1.0:完全正确且有帮助 - 0.7:基本正确但有遗漏 - 0.3:部分正确但有误导 - 0.0:完全错误 请只返回一个数字分数。""" response = judge.invoke(prompt) score = float(response.content.strip()) return {"key": "llm_judge_score", "score": score} results = evaluate( my_agent, data="customer-service-eval", evaluators=[llm_judge], experiment_prefix="v2.1-llm-judge" )

9. 团队协作功能

9.1 组织与工作区层级

LangSmith 采用 Organization → Workspace → Project 的三级层级结构:

层级说明典型用法
Organization公司级别,管理用户、SSO、计费一个公司一个 Organization
Workspace团队/业务单元级别,隔离资源按团队或环境划分(如 backend-teamproduction
Project应用级别,组织 trace 和数据集按应用或功能划分(如 chatbotsearch-agent

操作步骤

步骤 1:创建工作区

1. 进入 Organization Settings 2. 点击 "Workspaces" → "Create Workspace" 3. 输入名称(如 "AI-Team-Dev") 4. 配置工作区设置

步骤 2:管理团队成员与角色

LangSmith 支持基于角色的访问控制(RBAC):

角色权限适用人员
Admin完全管理权限技术负责人
User读写 trace、数据集、Prompt开发者
Viewer只读访问产品经理、QA
1. 进入 Workspace Settings → Members 2. 点击 "Invite Member" 3. 输入邮箱,选择角色 4. 发送邀请

步骤 3:使用 Annotation Queue 进行人工标注

Annotation Queue 是团队协作评估的核心功能:

1. 进入 "Annotation Queues" → "Create Queue" 2. 配置过滤条件(如:只包含低分 trace) 3. 分配标注人员 4. 标注人员逐条审查 trace,给出反馈分数和评论 5. 标注结果自动汇总到评估指标中

10. 与 LangGraph 多 Agent 系统集成

10.1 LangGraph 追踪概述

LangGraph 是 LangChain 团队开发的 Agent 编排框架,与 LangSmith 深度集成。LangGraph 应用的每个节点(Node)、边(Edge)和状态转换都会自动记录为 trace 中的子 span,提供完整的多 Agent 可视化。

操作步骤

步骤 1:配置 LangGraph 追踪

import os os.environ["LANGSMITH_TRACING"] = "true" os.environ["LANGSMITH_API_KEY"] = "lsv2_pt_xxx" os.environ["LANGSMITH_PROJECT"] = "multi-agent-system" from langgraph.graph import StateGraph, START, END from langchain_openai import ChatOpenAI from typing import TypedDict, Annotated import operator # 定义状态 class AgentState(TypedDict): messages: Annotated[list, operator.add] next_agent: str # 定义 Agent 节点 llm = ChatOpenAI(model="gpt-4.1-mini") def researcher(state: AgentState) -> AgentState: """研究员 Agent:负责信息收集""" response = llm.invoke(f"作为研究员,请分析:{state['messages'][-1]}") return {"messages": [response.content], "next_agent": "writer"} def writer(state: AgentState) -> AgentState: """写作者 Agent:负责内容生成""" response = llm.invoke(f"作为写作者,基于以下研究撰写内容:{state['messages'][-1]}") return {"messages": [response.content], "next_agent": "reviewer"} def reviewer(state: AgentState) -> AgentState: """审查者 Agent:负责质量审查""" response = llm.invoke(f"作为审查者,请审查以下内容:{state['messages'][-1]}") return {"messages": [response.content], "next_agent": "end"} # 构建图 def route(state: AgentState) -> str: return state.get("next_agent", "end") graph = StateGraph(AgentState) graph.add_node("researcher", researcher) graph.add_node("writer", writer) graph.add_node("reviewer", reviewer) graph.add_edge(START, "researcher") graph.add_conditional_edges("researcher", route, {"writer": "writer"}) graph.add_conditional_edges("writer", route, {"reviewer": "reviewer"}) graph.add_conditional_edges("reviewer", route, {"end": END}) app = graph.compile() # 执行——所有节点的执行过程自动追踪到 LangSmith result = app.invoke({ "messages": ["请写一篇关于 AgentOps 的技术博客"], "next_agent": "researcher" })

步骤 2:在 LangSmith UI 中查看多 Agent Trace

执行后,在 LangSmith UI 中可以看到:

📊 Trace: multi-agent-system ├── 🔄 StateGraph (总耗时: 12.3s, 总 Token: 4,521) │ ├── 🔍 researcher (耗时: 3.2s, Token: 1,203) │ │ └── 🤖 ChatOpenAI (gpt-4.1-mini) │ ├── ✍️ writer (耗时: 5.1s, Token: 2,105) │ │ └── 🤖 ChatOpenAI (gpt-4.1-mini) │ └── 📋 reviewer (耗时: 4.0s, Token: 1,213) │ └── 🤖 ChatOpenAI (gpt-4.1-mini)

步骤 3:分布式追踪(跨服务传播)

当 Agent 部署为独立服务时,可以传播 trace 上下文:

# 服务 A:调用方 import langsmith as ls @ls.traceable def orchestrator(query: str): # 获取当前 trace 的 headers headers = ls.get_current_run_tree().to_headers() # 将 headers 传递给下游服务 response = requests.post( "http://agent-service/invoke", json={"query": query}, headers=headers ) return response.json()

实战案例:从零搭建客服机器人的 LangSmith 监控体系

场景描述

一个电商客服机器人,使用 RAG 架构,需要完整的可观测性体系。

案例的具体操作流程

import os import langsmith as ls from langsmith import Client, evaluate from langsmith.wrappers import wrap_openai import openai # ===== 第 1 步:环境配置 ===== os.environ["LANGSMITH_TRACING"] = "true" os.environ["LANGSMITH_API_KEY"] = "lsv2_pt_xxx" os.environ["LANGSMITH_PROJECT"] = "ecommerce-chatbot-prod" client = Client() oai_client = wrap_openai(openai.Client()) # ===== 第 2 步:创建项目和数据集 ===== # 创建评估数据集 dataset = client.create_dataset( "ecommerce-qa-golden", description="电商客服黄金测试集" ) golden_examples = [ {"inputs": {"q": "怎么退货?"}, "outputs": {"a": "7天无理由退货,请在订单页申请"}}, {"inputs": {"q": "发票怎么开?"}, "outputs": {"a": "订单完成后在订单详情页申请电子发票"}}, {"inputs": {"q": "会员有什么优惠?"}, "outputs": {"a": "会员享受9折优惠和免运费服务"}}, ] for ex in golden_examples: client.create_example(inputs=ex["inputs"], outputs=ex["outputs"], dataset_id=dataset.id) # ===== 第 3 步:带追踪的 Agent 实现 ===== @ls.traceable(run_type="tool", name="知识库检索") def search_knowledge_base(query: str) -> str: # 实际项目中调用向量数据库 knowledge = { "退货": "7天无理由退货政策...", "发票": "支持电子发票和纸质发票...", "会员": "会员等级:银卡、金卡、钻石卡..." } for key, value in knowledge.items(): if key in query: return value return "未找到相关信息" @ls.traceable( run_type="chain", name="客服问答", tags=["production", "ecommerce"], metadata={"version": "1.0"} ) def customer_service(question: str) -> dict: context = search_knowledge_base(question) response = oai_client.chat.completions.create( model="gpt-4.1-mini", messages=[ {"role": "system", "content": f"你是电商客服。基于知识库回答:\n{context}"}, {"role": "user", "content": question} ] ) answer = response.choices[0].message.content return {"a": answer} # ===== 第 4 步:运行评估 ===== results = evaluate( lambda inputs: customer_service(inputs["q"]), data="ecommerce-qa-golden", evaluators=[ lambda run, example: { "key": "contains_key_info", "score": 1.0 if any( kw in run.outputs.get("a", "") for kw in ["退货", "发票", "会员", "订单"] ) else 0.0 } ], experiment_prefix="v1.0-baseline" ) print(f"评估完成,请在 LangSmith UI 查看详细结果")

案例分析

  1. 分层追踪:通过 @traceable 装饰器,知识库检索和 LLM 调用分别记录为独立的 span,便于定位性能瓶颈
  2. 标签和元数据tagsmetadata 帮助在生产环境中快速过滤和分析特定类型的请求
  3. 黄金测试集:从真实用户问题中提炼的评估数据集,确保评估结果反映实际使用场景
  4. 持续评估:每次模型或 Prompt 更新后,重新运行评估并对比历史结果,防止质量回退

避坑指南

❌ 常见错误

  1. API Key 硬编码到代码中

    • 问题:API Key 泄露到 Git 仓库,可能被恶意使用导致费用激增
    • 正确做法:使用环境变量或密钥管理服务(如 AWS Secrets Manager、HashiCorp Vault)存储 Key,并在 .gitignore 中排除 .env 文件
  2. 生产环境开启 100% 追踪

    • 问题:高流量应用每月可能产生数百万条 trace,导致费用失控($0.005/trace × 1,000,000 = $5,000/月)
    • 正确做法:生产环境配置采样率(如 10%-20%),对关键路径保持 100% 追踪,对常规请求降低采样率
  3. 忽略 Trace 中的敏感数据

    • 问题:用户的个人信息(姓名、邮箱、地址)可能随 Prompt 一起被记录到 LangSmith,违反 GDPR 等隐私法规
    • 正确做法:在发送 trace 前对敏感字段进行脱敏处理,或使用 LangSmith 的数据过滤功能排除特定字段
  4. 所有 trace 发送到同一个 Project

    • 问题:开发、测试、生产的 trace 混在一起,难以分析和监控
    • 正确做法:按环境创建独立 Project(如 app-devapp-stagingapp-prod),通过 LANGSMITH_PROJECT 环境变量区分
  5. 只追踪 LLM 调用,忽略工具调用和检索步骤

    • 问题:当 Agent 输出质量下降时,无法判断是 LLM 推理问题还是检索质量问题
    • 正确做法:使用 @traceable 装饰所有关键函数(检索、工具调用、后处理),构建完整的调用链
  6. 评估数据集长期不更新

    • 问题:数据集与实际用户问题脱节,评估分数高但用户满意度低
    • 正确做法:定期从生产 trace 中筛选新的典型案例加入数据集,每月至少更新一次

✅ 最佳实践

  1. 建立 Prompt 变更的评估流水线:每次修改 Prompt 后,自动运行评估数据集对比前后效果,防止质量回退
  2. 使用 Annotation Queue 进行人工审查:安排团队成员定期审查低分 trace,发现系统性问题
  3. 设置成本告警:在仪表板中配置 Token 消耗告警,当日消耗超过阈值时及时通知
  4. 利用标签进行 A/B 测试:为不同版本的 Prompt 或模型添加标签,在仪表板中对比各版本的性能指标
  5. 将评估集成到 CI/CD:在代码合并前自动运行评估,确保每次变更不会降低输出质量

相关资源与延伸阅读

资源类型说明
LangSmith 官方文档 文档最权威的 LangSmith 使用指南
LangSmith Python SDK (PyPI) SDKPython SDK 安装和 API 参考
LangSmith JS/TS SDK (npm) SDKJavaScript/TypeScript SDK
langchain-ai/langsmith-sdk (GitHub) 源码SDK 源码和示例
langchain-ai/intro-to-langsmith (GitHub) 教程官方入门教程仓库
LangSmith Tracing Quickstart 教程官方追踪快速入门
LangSmith Pricing FAQ 文档定价常见问题解答
LangChain Blog - OpenTelemetry Support 博客OTel 集成详解
LangChain Blog - Workspaces 博客工作区功能介绍
LangSmith Cookbook (GitHub) 示例实战食谱和代码示例集

参考来源


📖 返回 总览与导航 | 上一节:21b-可观测性平台对比 | 下一节:21d-Langfuse设置指南

Last updated on