🧠 图解记忆:先用 Trace 定位单次链路,再用数据集与评测对比版本回归;点击图片可查看原图。
**LangSmith 核心功能:**展开 Python 代码示例(32 行)
python
# LangSmith 配置
import langsmith
client = langsmith.Client(
api_key=os.environ["LANGSMITH_API_KEY"],
project="agent-production"
)
# 装饰器方式追踪
@client.traceable(project_name="tool-calling-agent")
async def agent_with_tools(query: str):
# 完整链路自动记录
result = await agent.run(query)
return result
# 手动记录额外信息
run = client.create_run(
project_name="agent-production",
name="customer-support-agent",
run_type="agent",
inputs={"query": query},
extra={"user_tier": "premium"} # 自定义字段
)
# 记录每个工具调用
client.create_feedback(
run.id,
key="tool_accuracy",
score=0.95, # 0-1 评分
correction={"expected_tool": "get_order_status"},
comment="工具参数基本正确,1次轻微偏差"
)LangSmith 高级用法 - Prompt 版本管理:
python
# 对比两个不同 Prompt 版本的效果
from langsmith.schemas import Example, Run
def compare_prompt_versions(prompt_v1: str, prompt_v2: str, test_set: list):
results = []
for query in test_set:
# v1 版本
run_v1 = await agent_with_prompt(query, prompt_v1)
# v2 版本
run_v2 = await agent_with_prompt(query, prompt_v2)
# 对比
comparison = client.evaluate_run_pair(
run_v1, run_v2,
evaluation_config={
"evaluators": ["cot_qa", "precision", "recall"]
}
)
results.append({
"query": query,
"v1_score": comparison.score_v1,
"v2_score": comparison.score_v2,
"winner": "v2" if comparison.score_v2 > comparison.score_v1 else "v1"
})
return results面试话术:
"调试 Agent 要把一次任务的模型调用、检索、工具、状态变更和错误串成 trace,并把用户/人工反馈关联到具体版本。平台或装饰器只是采集手段;关键是能从失败切片定位输入、决策、工具还是系统问题,并用回归集验证修复。埋点本身也有性能、隐私和采样成本。"
