Skip to content
🔗 分享本题
查看我的学习进度 →

23 模块 Q2 教学图:如何用 LangSmith 做 Agent 调试?有哪些高级用法?

🧠 图解记忆:先用 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,并把用户/人工反馈关联到具体版本。平台或装饰器只是采集手段;关键是能从失败切片定位输入、决策、工具还是系统问题,并用回归集验证修复。埋点本身也有性能、隐私和采样成本。"