学习笔记 · Obsidian

LangSmith 评估体系与方法选择

LangChainLangSmith

核心模型

一次离线评估由三个基本对象组成:

  1. Dataset / Example:稳定的输入,可选 reference output;
  2. Target function:要测试的模型调用、组件、完整 agent 或 graph;
  3. Evaluator:把实际输出、reference、运行轨迹等转成反馈分数。

目标函数在 dataset 上执行后形成 experiment;同一 dataset 上的不同 experiment 用于比较 prompt、模型、代码或配置版本。评估提供连续指标,测试则把指标变成是否允许发布的断言;生产级流程通常同时使用两者。

离线与在线不是替代关系

维度离线评估在线评估
数据有版本的 dataset/examples,可有 reference生产 tracing project 中的 runs/threads,通常无 reference
时机开发、发布前、CI发布后实时或近实时
目标benchmark、单测、回归、backtest质量监控、安全、异常检测、真实反馈
评估方式批量 experiment规则 + 过滤 + sampling 自动运行
成本控制repetitions、concurrency、cachesampling、过滤、限额与告警

正确闭环是:生产 trace → 线上 evaluator/人工反馈发现失败 → 加入 dataset → 离线复现与修复 → 与 baseline 比较 → 重新部署。只做离线评估会错过真实分布漂移,只做在线评分又无法稳定复现回归。

Evaluator 选择

类型适合风险与控制
Code / heuristic格式、精确值、分类标签、工具名、延迟和成本快且确定,但覆盖不了主观质量
Human偏好、风格、安全、复杂业务判断质量高但慢,需要 rubric、抽样与一致性校准
LLM-as-judge正确性、相关性、忠实度、帮助性、完整性有偏差、非确定且有成本;需人工标注集、few-shot 和审计
Pairwise比较两个版本相对判断通常比绝对分数稳定,但需控制位置/顺序偏差
Trajectoryagent 工具调用路径能发现内部失败,但“唯一路径”假设可能惩罚其他正确解法

Agent 的三层评估

  • 最终结果:把 agent 当黑盒,判断任务是否完成;最接近用户体验,但慢且难定位根因。
  • 单步决策:检查某一步是否选对工具及参数;快、可定位,但不代表端到端成功。
  • 完整轨迹:比较工具序列、无序工具集合、错误步骤数,或让 judge 比较完整消息轨迹。严格 exact match 只适合确有唯一合法路径的任务。

复杂 agent 应把三层组合:结果指标作为发布门,关键高风险步骤使用确定性检查,轨迹指标负责诊断和安全审计。

RAG、摘要与分类

RAG 至少拆成 document relevance、answer faithfulness、helpfulness 与 correctness。前三项可做 reference-free 线上评估;正确性通常需要 reference answer。不同版本的格式或风格适合 pairwise,对事实正确性仍应使用 reference 或一致性证据。

摘要通常存在多个正确答案,优先依据原文检查事实准确、忠实与帮助性,而不是强制匹配单个 reference summary。分类若有 ground-truth 标签,应使用 accuracy/precision/recall 等确定性指标;没有标签时才让 LLM 按 rubric 分类,并持续用人工样本校准。

数据组织原则

  • examples 来自人工策划、生产 traces 或合成数据;生产失败样本最能缩小离线与线上差距。
  • splits 用于训练/验证、难度、领域或 staged rollout;metadata 用于来源、标签、版本和筛选。
  • dataset 修改自动生成版本;CI 应固定版本或语义 tag,避免测试集变化伪装成代码回归。
  • 主观指标看相对趋势,不把单次 judge 分数当绝对真相。

最短实践路径

Quickstart 的 UI 与 SDK 流程相同:准备 workspace/provider secret → 创建 prompt/target → 建 dataset → 添加 correctness evaluator → 运行 experiment → 查看结果。SDK 支持 Python 与 TypeScript;LANGSMITH_API_KEY、provider key 和可选 workspace ID 均应通过密钥管理注入,不能写入源码或数据集。