评估什么
在构建评估之前,请确定对你的应用重要的内容。将你的系统分解为关键组件——LLM 调用、检索步骤、工具调用、输出格式化——并为每个组件确定质量标准。 从手动策划的示例开始。 为每个关键组件创建 5-10 个“好”的示例。这些示例作为你的基准真相,并指导你使用哪种评估方法。例如:- RAG 系统:良好检索(相关文档)和良好答案(准确、完整)的示例。
- Agent:正确工具选择和适当参数格式化或 Agent 所采取轨迹的示例。
- 聊天机器人:有帮助、符合品牌且能解决用户意图的响应示例。
离线评估与在线评估
LangSmith 支持两种类型的评估,它们在你的开发工作流中服务于不同的目的:离线评估
使用离线评估进行部署前测试:- 基准测试:比较多个版本以找到最佳性能者。
- 回归测试:确保新版本不会降低质量。
- 单元测试:验证单个组件的正确性。
- 回测:使用历史数据测试新版本。
在线评估
使用在线评估进行生产监控:- 实时监控:在实时流量上持续跟踪质量。
- 异常检测:标记异常模式或边缘情况。
- 生产反馈:识别问题以添加到离线数据集中。
评估生命周期
随着你开发和部署你的应用,你的评估策略从部署前测试演变为生产监控。在开发和测试期间,离线评估根据策划的数据集验证功能。部署后,在线评估在实时流量上监控生产行为。随着应用成熟,两种评估类型在迭代反馈循环中协同工作,持续改进质量。1. 使用离线评估进行开发
在生产部署之前,使用离线评估来验证功能、对不同方法进行基准测试并建立信心。 按照快速入门运行你的第一次离线评估。2. 使用在线评估进行初始部署
部署后,使用在线评估来监控生产质量、检测意外问题并收集真实世界数据。 了解如何为生产监控配置在线评估。3. 持续改进
在迭代反馈循环中结合使用两种评估类型。在线评估发现的问题成为离线测试用例,离线评估验证修复,而在线评估确认生产改进。核心评估目标
评估根据是离线还是在线,在不同的目标上运行。离线评估的目标
离线评估在数据集和示例上运行。参考输出的存在使得预期结果和实际结果之间的比较成为可能。数据集
数据集是用于评估应用的_示例集合_。示例是一个测试输入、参考输出对。
示例
每个示例包含:- 输入:传递给你的应用的输入变量字典。
- 参考输出(可选):参考输出字典。这些不会传递给你的应用,仅在评估器中使用。
- 元数据(可选):可用于创建数据集筛选视图的附加信息字典。

实验
一个_实验_代表在数据集上评估特定应用版本的结果。每个实验捕获数据集中每个示例的输出、评估器分数和执行跟踪。
在线评估的目标
在线评估在来自生产流量的运行和线程上运行。没有参考输出,评估器专注于实时检测问题、异常和质量下降。运行
一个_运行_是来自你的已部署应用的单个执行跟踪。每个运行包含:- 输入:你的应用实际收到的用户输入。
- 输出:你的应用实际返回的内容。
- 中间步骤:所有子运行(工具调用、LLM 调用等)。
- 元数据:标签、用户反馈、延迟指标等。
线程
_线程_是代表多轮对话的相关运行的集合。在线评估器可以在线程级别运行,以评估整个对话而不是单个轮次。这使得能够评估对话级别的属性,如跨轮次的连贯性、主题维护以及整个交互过程中的用户满意度。评估器
_评估器_是工作区级别的资源,用于对应用性能进行评分。它们为离线和在线评估提供测量层,并根据可用数据调整其输入。因为评估器的作用域是工作区,所以你可以将单个评估器附加到多个追踪项目和数据集,而无需每次都重新创建它。 使用以下任何方式运行评估器:- 评估器页面,将其附加到追踪项目或数据集
- Playground
- LangSmith SDK(Python 和 TypeScript)
- 规则,在追踪项目或数据集上自动运行它们
评估器输入
评估器输入因评估类型而异: 离线评估器接收: 在线评估器接收:- 运行:包含输入、输出和中间步骤的生产跟踪(没有参考输出可用)。
评估器输出
评估器返回反馈,即评估的分数。反馈是一个字典或字典列表。每个字典包含:key:指标名称。score|value:指标值(score用于数值指标,value用于分类指标)。comment(可选):分数的附加推理或解释。
评估技术
LangSmith 支持多种评估方法:人工
_人工评估_涉及对应用输出和执行跟踪的手动审查。这种方法通常是评估的有效起点。LangSmith 提供工具来审查应用输出和跟踪(所有中间步骤)。 标注队列 标注队列简化了对运行进行结构化人工反馈收集的过程。它们通过提供具有规定评分标准、团队协作功能和进度跟踪的有组织工作流,补充了内联标注。 LangSmith 支持两种队列类型:- 单运行队列:根据自定义评分标准一次审查一个运行。对于分类问题或从生产跟踪构建数据集很有用。
- 成对队列:并排比较两个运行以判断哪个更好。专为实验之间的快速 A/B 比较而设计。
代码
_代码评估器_是确定性的、基于规则的函数。它们适用于诸如验证聊天机器人响应的结构不为空、生成的代码可编译或分类完全匹配等检查。LLM 作为裁判
_LLM 作为裁判评估器_使用 LLM 对应用输出进行评分。评分规则和标准通常编码在 LLM 提示中。这些评估器可以是:- 无参考:检查输出是否包含冒犯性内容或是否符合特定标准。
- 基于参考:将输出与参考进行比较(例如,检查相对于参考的事实准确性)。
成对比较
_成对比较评估器_使用启发式方法(例如,哪个响应更长)、LLM(使用成对提示)或人工审查员比较两个应用版本的输出。 当直接对输出评分很困难但比较两个输出很简单时,成对比较评估效果很好。例如,在摘要任务中,选择两个摘要中信息量更大的那个通常比为单个摘要分配绝对分数更容易。 了解如何运行成对比较评估。无参考与基于参考的评估器
了解评估器是否需要参考输出对于确定何时可以使用它至关重要。 无参考评估器在不与预期输出比较的情况下评估质量。这些适用于离线和在线评估:- 安全检查:毒性检测、PII 检测、内容策略违规
- 格式验证:JSON 结构、必需字段、模式合规性
- 质量启发式:响应长度、延迟、特定关键词
- 无参考 LLM 作为裁判:清晰度、连贯性、有用性、语气
- 正确性:与参考答案的语义相似性
- 事实准确性:根据基准真相进行事实核查
- 精确匹配:具有已知标签的分类任务
- 基于参考的 LLM 作为裁判:将输出质量与参考进行比较
评估类型
LangSmith 支持针对开发和部署不同阶段的各种评估方法。了解何时使用每种类型有助于构建全面的评估策略。 离线和在线评估服务于不同的目的:- 离线评估类型在具有参考输出的策划数据集上进行部署前测试
- 在线评估类型在没有参考输出的实时流量上监控生产行为
最佳实践
构建数据集
构建数据集有多种策略: 手动策划的示例 这是推荐的起点。创建 10-20 个高质量示例,涵盖常见场景和边缘情况。这些示例定义了你的应用“好”的样子。 历史跟踪 一旦投入生产,将真实跟踪转换为示例。对于高流量应用:- 用户反馈:添加收到负面反馈的运行以进行测试。
- 启发式方法:识别有趣的运行(例如,长延迟、错误)。
- LLM 反馈:使用 LLM 检测值得注意的对话。
数据集组织
分割 分割是数据集的命名子集,用于将示例分成不同的组。常见模式包括:- 机器学习风格的分割:将示例分为训练集、验证集和测试集,以避免过拟合(模型在训练数据上表现良好但在未见过的数据上表现不佳)。
- 基于类别的分割:当数据集跨越多个任务类别时,分别评估不同的输入类型。
- 分阶段推出:在准备好将探索性示例包含在主评估集中之前,将其隔离。
人工反馈收集
人工反馈通常提供最有价值的评估,特别是在主观质量维度上。 标注队列 标注队列支持结构化的人工反馈收集。标记特定运行进行审查,在简化的界面中收集标注,并将标注的运行传输到数据集以供未来评估。 标注队列通过提供额外功能来补充内联标注:分组运行、指定标准以及配置审查员权限。评估与测试
测试和评估是相似但不同的概念。 评估根据指标衡量性能。 指标可以是模糊的或主观的,并且在相对意义上更有用。它们通常将系统相互比较。 测试断言正确性。 系统只有通过所有测试才能部署。 评估指标可以转换为测试。例如,回归测试可以断言新版本在相关指标上必须优于基线版本。当系统运行成本高昂时,一起运行测试和评估以提高效率。 评估可以使用标准测试工具编写,如 pytest 或 Vitest/Jest。快速参考:离线评估与在线评估
下表总结了离线评估和在线评估之间的主要区别:| 离线评估 | 在线评估 | |
|---|---|---|
| 运行于 | 数据集(示例) | 追踪项目(运行/线程) |
| 数据访问 | 输入、输出、参考输出 | 仅输入、输出 |
| 何时使用 | 部署前,开发期间 | 生产环境,部署后 |
| 主要用例 | 基准测试、单元测试、回归测试、回测 | 实时监控、生产反馈、异常检测 |
| 评估时机 | 在策划的测试集上进行批处理 | 在实时流量上实时或近实时进行 |
| 设置位置 | 评估选项卡(SDK、UI、Playground) | 可观测性选项卡(自动规则) |
| 数据要求 | 需要数据集策划 | 不需要数据集,评估实时跟踪 |
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时答案。



