SuperAPI AI 工具集

langsmith-observability

智能体与模型

查看项目

更新于 10-15 11:56

技能介绍

LangSmith 是一个面向语言模型与 AI 应用的可观测性平台,用于调试、评估和监控 LLM 应用。以下内容按用途、主要能力、使用方式、适用场景和限制整理。

一、用途 当需要调试 LLM 应用问题(提示词、链、智能体)、系统化地基于数据集评估模型输出、监控生产环境中的 LLM 系统、为 AI 功能构建回归测试、分析延迟与 token 用量及成本、或协作进行提示词工程时,可使用 LangSmith。 官方同时给出了替代方案的适用场景:Weights & Biases 偏向深度学习实验追踪与模型训练;MLflow 偏向通用 ML 生命周期与模型注册;Arize/WhyLabs 偏向 ML 监控与数据漂移检测。

二、主要能力

  1. 追踪(Tracing):捕获所有 LLM 调用的输入、输出与延迟。
  2. 评估(Evaluation):使用内置评估器与自定义评估器进行系统化测试。
  3. 数据集(Datasets):从生产追踪记录或手动创建测试集。
  4. 监控(Monitoring):跟踪生产环境中的指标、错误与成本。
  5. 集成(Integrations):可与 OpenAI、Anthropic、LangChain、LlamaIndex 配合使用。

三、使用方式 安装与配置: pip install langsmith export LANGSMITH_API_KEY="your-api-key" export LANGSMITH_TRACING=true

基于 @traceable 的基础追踪: from langsmith import traceable from openai import OpenAI client = OpenAI() @traceable def generate_response(prompt: str) -> str: response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": prompt}] ) return response.choices[0].message.content result = generate_response("What is machine learning?")

OpenAI 包装器(自动追踪): from langsmith.wrappers import wrap_openai from openai import OpenAI client = wrap_openai(OpenAI()) response = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "Hello!"}] )

核心概念:

  • Runs 与 traces:run 是单次执行单元(LLM 调用、链、工具),多个 run 组成层级化的 trace,展示完整执行流程。可用 @traceable(run_type="chain")、run_type="retriever"、run_type="llm" 等标注。
  • Projects:组织相关 run,可通过环境变量 LANGSMITH_PROJECT 或 @traceable(project_name=...) 设置。
  • Client API:可 list_runs、read_run、create_feedback 等。示例: from langsmith import Client client = Client() runs = list(client.list_runs( project_name="my-project", filter='eq(status, "success")', limit=100 )) run = client.read_run(run_id="...") client.create_feedback( run_id="...", key="correctness", score=0.9, comment="Good answer" )

数据集与评估:

  • 创建数据集与示例:client.create_dataset、client.create_examples。
  • 运行评估:使用 langsmith.evaluate,传入模型函数、数据与评估器。示例: from langsmith import evaluate def my_model(inputs: dict) -> dict: return {"answer": generate_answer(inputs["question"])} def correctness_evaluator(run, example): prediction = run.outputs["answer"] reference = example.outputs["answer"] score = 1.0 if reference.lower() in prediction.lower() else 0.0 return {"key": "correctness", "score": score} results = evaluate( my_model, data="qa-test-set", evaluators=[correctness_evaluator], experiment_prefix="v1" ) print(f"Average score: {results.aggregate_metrics['correctness']}")
  • 内置评估器:使用 langsmith.evaluation 的 LangChainStringEvaluator,如 "qa"、"cot_qa"。

高级追踪:

  • tracing_context 上下文:可设置 project_name、tags、metadata。
  • 手动 run:使用 trace 上下文管理器,指定 name、run_type、inputs,并在结束时写入 outputs。
  • 处理输入输出:通过 process_inputs 脱敏,例如将 password 替换为 ***。
  • 采样:设置环境变量 LANGSMITH_TRACING_SAMPLING_RATE 控制采样率(如 0.1 表示 10%)。

LangChain 集成:启用 LANGSMITH_TRACING=true 后,链式调用的 run 会自动追踪。

生产监控:

  • Hub prompts:client.pull_prompt("my-org/qa-prompt") 拉取并使用提示词。
  • 异步客户端:AsyncClient 配合 async for 遍历 list_runs。
  • 反馈收集:create_feedback 记录用户评分(如归一化到 0-1)与评论。

测试集成:

  • Pytest 集成:使用 langsmith 的 @test。
  • CI/CD 中的评估:运行 evaluate,并在 aggregate_metrics 低于阈值时断言失败。

最佳实践(官方列出):使用一致的项目/run 命名约定;添加元数据(版本、环境、用户信息);生产环境使用采样率控制体量;从有意思的生产案例构建测试集;在 CI/CD 中自动化评估;监控 token 用量与延迟趋势。

四、常见问题

  • 追踪未出现:确认 LANGSMITH_TRACING 为 true、LANGSMITH_API_KEY 正确,并用 Client().list_projects() 验证连接。
  • 追踪带来高延迟:启用后台批处理(Client(auto_batch_tracing=True),为默认行为)或使用采样。
  • 大体积负载:通过 @traceable 的 process_inputs 隐藏敏感或大字段。

五、适用场景 调试 LLM 应用问题、系统性评估模型输出、生产环境监控、AI 功能回归测试、延迟与成本分析、提示词工程协作。

六、限制与说明

  • 官方文本中未提供具体的收费与价格信息。
  • 版本为 0.2.0+,许可证为 MIT。
  • 其他功能细节、平台支持范围与使用限制,资料中暂未提供。