欢迎光临
我们一直在努力

LangSmith 全链路 Trace 记录方案

一、LangSmith 全链路 Trace 记录方案

LangSmith 可以完整记录 RAG/Agent 应用每一次调用的模型参数、工具执行、检索结果、Token 消耗与完整执行链路,形成可追溯的 Trace 树,核心分为基础接入和分环节精细化埋点两层。

1. 基础追踪接入

LangSmith 支持两种接入模式,覆盖不同技术栈场景:

  • LangChain/LangGraph 生态:零代码自动追踪
    仅通过环境变量配置即可开启全链路自动追踪,无需修改业务代码:

    import os
    os.environ["LANGSMITH_TRACING"] = "true" # 新版标准配置,向下兼容旧版 LANGCHAIN_TRACING_V2
    os.environ["LANGSMITH_API_KEY"] = "你的 API 密钥"
    os.environ["LANGSMITH_PROJECT"] = "rag-test-project" # 按项目分组管理 Trace

    配置完成后,所有 LangChain 封装的模型、工具、检索器调用会自动生成层级化 Trace,完整展示执行顺序与依赖关系。

  • 非 LangChain 应用:装饰器手动埋点
    原生 LLM SDK、自定义检索逻辑可通过 @traceable 装饰器标注,自主控制追踪粒度:

    from langsmith import traceable

2. 模型调用完整追踪

要完整记录模型名称、提供商、调用参数、Token 消耗,需满足 4 项配置要求:

  • 指定 run_type="llm",让 LangSmith 按 LLM 调用格式渲染页面并做成本统计
  • 输入输出采用 OpenAI/Anthropic/LangChain 标准消息格式,支持 Playground 一键复现调用
  • 在 metadata 中传入 ls_provider(模型厂商)和 ls_model_name(具体模型名称)
  • 在输出中返回 usage_metadata 字段,包含 input_tokens、output_tokens、total_tokens,支持缓存命中、工具调用等细分 Token 统计
  • 基于 LangChain 官方封装的模型(如 ChatOpenAI、ChatAnthropic)会自动完成以上配置;自定义模型封装需手动补充上述字段。

    3. 工具调用追踪

    工具执行的入参、返回结果、耗时、异常堆栈均可完整记录:

    • LangChain 体系内定义的 Tool 会自动被追踪
    • 自定义工具函数添加 @traceable(run_type="tool", name="工具名称") 装饰器即可接入
    • 支持捕获工具执行异常与报错信息,便于定位工具侧故障与逻辑错误

    4. 检索环节追踪

    RAG 的检索链路是核心观测点,需单独埋点记录召回全细节:

    • 将检索函数标记为 run_type="retriever",LangSmith 会以专属格式渲染检索结果
    • 必须记录的核心字段:用户查询 Query、召回文档 ID/内容片段、相似度得分、召回数量、检索耗时
    • 多层检索(如粗召回+精排)可嵌套为子 Trace,清晰展示每一层的处理结果与过滤逻辑

    5. Token 与成本自动统计

    在 usage_metadata 规范配置的前提下,LangSmith 会自动汇总单次调用、整条链路的 Token 消耗,并根据对应模型的单价计算预估成本。支持按项目、时间、模型维度聚合统计,可用于测试阶段的成本预算与生产环境的成本管控。

    二、断言与评估体系

    Trace 是基础数据载体,断言与评估是质量判定的核心手段,LangSmith 支持「确定性断言 + 多维度评估器」的组合方案,覆盖刚性校验与主观质量评估。

    1. 确定性断言机制

    断言是刚性的通过/不通过判定,适合结构化、可量化的校验场景,通常以代码形式实现:

    • 实现逻辑:在测试数据集的 reference_outputs 中预定义断言规则(字段要求、关键词、正则模式、Schema 结构),编写自定义评估器逐条校验,返回 1.0(通过)/ 0.0(不通过)的二元评分。
    • 常见断言场景:
      • 输出格式断言:校验是否为合法 JSON、是否包含指定业务字段
      • 业务规则断言:校验答案是否命中必填关键词、是否符合业务约束边界
      • 链路断言:校验是否调用了正确的工具、是否触发了预期的检索逻辑

    2. 两类核心评估器

    (1)代码评估器(确定性、零成本)

    通过 Python 代码编写校验逻辑,执行速度快、结果可复现,适合客观指标校验。
    典型实现方式为继承 RunEvaluator 基类,实现 evaluate_run 方法,入参为当前运行实例与测试样例,返回评分与评语。适用场景包括路由正确性判断、格式校验、检索召回数量校验、敏感词检测等。

    (2)LLM-as-Judge 评估器(主观质量判定)

    调用大模型作为裁判,基于预设评分标准(Rubric)对输出质量打分,适合语义类、主观类的质量评估。

    • 支持自定义评分维度与打分规则,例如忠实度、相关性、完整性、幻觉检测
    • 可配置多维度同时打分,一次性输出多个指标结果
    • 关键场景需配合人工抽检校准裁判模型,降低打分偏差

    3. 两种评估执行模式

    • 离线评估(批量回归):基于 LangSmith Dataset 测试集批量运行被测应用,自动执行所有评估器并生成实验报告。适合版本迭代前的回归测试、多策略 AB 效果对比。
    • 在线评估(实时监控):在生产 Trace 生成后自动触发评估器打分,实时监控线上质量。适合核心链路的常态化监控、异常 Case 自动标记与告警。

    三、LangSmith 辅助 RAG 应用测试的具体方法与步骤

    RAG 测试核心覆盖「检索质量」和「生成质量」两大维度,LangSmith 可实现从用例管理、执行测试、根因定位到回归验证的全流程闭环,支撑快速迭代下的质量保障。

    1. 明确 RAG 测试核心维度

    测试启动前先定义可量化指标,通常分为三层:

    维度核心指标说明
    检索质量 上下文准确率、上下文召回率 衡量召回文档是否相关、是否覆盖答案所需的全部信息
    生成质量 忠实度、答案相关性、答案完整性 衡量答案是否基于检索内容、是否答非所问、是否完整回应问题
    全链路效果 端到端正确率、幻觉率、平均响应时长、Token 成本 衡量最终业务效果与性能成本表现

    2. 具体测试执行步骤

    步骤1:构建标准化测试数据集

    测试集是 RAG 测试的基准,需覆盖典型业务场景与边界 Case:

  • 数据来源:从真实用户提问、业务高频问题、历史 Bad Case 中采样,确保数据贴合实际使用场景
  • 标注内容:每个样例包含问题、参考答案、参考上下文三类核心字段
  • 平台导入:在 LangSmith 平台创建 Dataset,或通过代码批量上传,支持按业务场景分组管理
  • 步骤2:完成全链路 Trace 埋点

    按照前文方案对 RAG 完整链路进行埋点,遵循一个核心原则:测试调用链路必须与生产链路完全一致,禁止为测试单独改造逻辑。
    需确保检索、重排、Prompt 组装、模型生成、后处理每个环节都有对应子 Trace,且输入、输出、关键参数完整记录,保证后续根因定位可追溯。

    步骤3:配置评估器与评分规则

    根据测试维度配置对应评估器,建议内置评估器与自定义评估器结合使用:

  • 内置 RAG 评估器:直接使用 LangSmith 集成的上下文准确率、上下文召回率、忠实度、答案相关性等标准指标
  • 业务自定义评估器:针对业务专属规则编写代码评估器,例如业务术语正确性、合规性校验
  • LLM 裁判评估器:定义业务专属评分 Rubric,对答案的业务准确性、逻辑通顺度做综合打分
  • 步骤4:执行批量测试,生成对比实验

    通过 evaluate 接口执行全量测试,生成独立的实验(Experiment):

    from langsmith.evaluation import evaluate

    result = evaluate(
    your_rag_chain, # 被测 RAG 完整链路
    data="你的测试集名称", # 对应 LangSmith Dataset
    evaluators=[评估器列表], # 预先配置的所有评估器
    experiment_prefix="rag-v2.0-test", # 实验名称前缀,便于版本区分
    maxConcurrency=3 # 控制并发量,避免压垮底层服务
    )

    • 支持同一测试集下运行多个实验,横向对比不同 Prompt、不同检索策略、不同模型版本的效果差异
    • 平台自动生成指标对比看板,直观展示版本间的指标升降幅度

    步骤5:低分 Case 根因定位

    这是 LangSmith 测试的核心价值——从宏观指标直接下钻到微观执行链路:

  • 在实验看板中按指标排序,筛选得分低于阈值的 Bad Case
  • 点击单条用例查看完整 Trace 树,逐层排查问题根因:
    • 检索得分低:排查召回文档是否不相关、TopK 设置是否合理、嵌入模型是否匹配
    • 检索正常但忠实度低:排查 Prompt 指令是否清晰、模型是否容易产生幻觉
    • 格式/规则不符合预期:排查后处理逻辑、断言规则是否准确
  • 标注问题类型,沉淀到问题分类库,便于后续统计高频问题
  • 步骤6:优化验证与持续回归

  • 针对定位出的问题进行优化(调整 Prompt、优化检索策略、更换模型等)
  • 在同一测试集上重新运行实验,对比优化前后的指标变化,验证优化效果
  • 将新增的 Bad Case 补充进测试数据集,逐步扩大测试覆盖范围
  • 将核心测试集纳入 CI/CD 流水线,每次版本迭代自动执行回归测试,防止质量退化
  • 赞(0)
    未经允许不得转载:171主机测评 » LangSmith 全链路 Trace 记录方案
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址