Skip to content
LangSmith 文档版本 跟随上游 源快照 c90e5121 更新于 2026-10-18

评估概念

LLM 输出是非确定的,这让响应质量难以评估。评估(eval)是一种把"好"长什么样拆解出来并加以衡量的方式。LangSmith Evaluation 提供一个在整个应用生命周期度量的框架,从部署前测试到生产监控。

评估什么

在构建评估之前,先确定对你的应用什么才重要。把你的系统拆成它的关键组件——LLM 调用、检索步骤、工具调用、输出格式化——并为每一个确定质量标准。

从手动策划的示例开始。 为每个关键组件创建 5-10 个"好"长什么样的示例。这些示例充当你的真实依据,并决定用哪些评估方法。例如:

  • RAG 系统:好检索(相关文档)和好答案(准确、完整)的示例。
  • Agent:正确工具选择和恰当参数格式、或 agent 所走轨迹的示例。
  • 聊天机器人:有用、符合品牌、回应了用户意图的答案示例。

一旦你通过示例定义了“好”,你就能度量你的系统多频繁地产出类似质量的输出。

离线与在线评估

LangSmith 支持两类在你的开发工作流中服务于不同目的的评估:

离线评估

  • 基准测试:比较多个版本以找到最佳表现者。
  • 回归测试:确保新版本不降低质量。
  • 单元测试:验证各个组件的正确性。
  • 回测:用历史数据测试新版本。

离线评估针对示例——来自数据集——:定义了“好”长什么样、带参考输出的精选测试用例。

在线评估

  • 实时监控:在实时流量上持续跟踪质量。
  • 异常检测:标记不寻常的模式或边缘情形。
  • 生产反馈:识别要加入离线数据集的问题。

在线评估针对运行和线程——来自追踪:没有参考输出的真实生产追踪。

这种目标上的差异决定了你能评估什么:离线评估能对照预期答案检查正确性,而在线评估聚焦于质量模式、安全性和真实世界行为。

评估生命周期

在你开发和部署应用时,你的评估策略从部署前测试演进到生产监控。在开发和测试期间,离线评估针对精选数据集验证功能。部署之后,在线评估在实时流量上监控生产行为。随着应用成熟,两种评估类型在一个迭代反馈回路中协同工作,持续改进质量。

graph LR
    A[Development] --> B[Testing]
    B --> C[Deployment]
    C --> D[Monitoring]
    D --> E[Iteration]

    A -.-> F[Offline]
    B -.-> F
    C -.-> G[Online]
    D -.-> G
    E -.-> H[Both]

    classDef process fill:#E5F4FF,stroke:#006DDD,stroke-width:2px,color:#030710

    class A,B,C,D,E process

    style F fill:#EBD0F0,stroke:#885270,color:#441E33
    style G fill:#EBD0F0,stroke:#885270,color:#441E33
    style H fill:#EBD0F0,stroke:#885270,color:#441E33

1. 用离线评估开发

在生产部署之前,用离线评估验证功能、对方法做基准测试并建立信心。

遵循快速开始运行你的第一次离线评估。

2. 用在线评估初始部署

部署之后,用在线评估监控生产质量、检测意外问题并收集真实世界数据。

了解如何配置在线评估以做生产监控。

3. 持续改进

在一个迭代反馈回路中协同使用两种评估类型。在线评估浮现出问题并成为离线测试用例,离线评估验证修复,在线评估确认生产改进。

核心评估目标

评估依据其是离线还是在线,运行在不同的目标上。

离线评估的目标

离线评估运行在数据集和示例上。参考输出的存在使得能比较预期与实际结果。

数据集

数据集是用于评估一个应用的示例集合。一个示例是一个测试输入-参考输出对。

List of datasets on the Examples tab in the LangSmith UI.List of datasets on the Examples tab in the LangSmith UI.

示例

每个示例由以下组成:

  • 输入:要传给应用的输入变量字典。
  • 参考输出(可选):一个参考输出字典。这些不会传给应用,只在评估器中使用。
  • 元数据(可选):一个附加信息字典,可用于创建数据集的过滤视图。
Example in the LangSmith UI.Example in the LangSmith UI.

进一步了解管理数据集。

实验

一个实验代表在一个数据集上评估某个特定应用版本的结果。每个实验都为数据集中的每个示例捕获输出、评估器分数和执行追踪。

Experiment view

通常在给定数据集上运行多个实验以测试不同的应用配置(例如不同的提示或 LLM)。LangSmith 展示与一个数据集关联的所有实验,并支持比较多个实验并排进行。

了解如何分析实验结果。

在线评估的目标

在线评估运行在生产流量的运行和线程上。没有参考输出,评估器聚焦于实时检测问题、异常和质量下降。

运行

一次运行是来自你已部署应用的一条单执行追踪。每次运行含:

  • 输入:你的应用实际收到的用户输入。
  • 输出:你的应用实际返回的内容。
  • 中间步骤:所有子运行(工具调用、LLM 调用等)。
  • 元数据:标签、用户反馈、延迟指标等。

与数据集里的示例不同,运行不含参考输出。在线评估器必须在不知道“正确答案”该是什么的情况下来评估质量,转而依赖质量启发式、安全检查和无参考评估技术。

进一步了解运行与追踪,见可观测性概念。

线程

线程是代表多轮对话的相关运行的集合。在线评估器能在线程级别运行,以评估整个对话而非单个回合。这使你能评估会话级的属性,如跨回合的连贯性、话题维持,以及一次交互全程的用户满意度。

评估器

评估器是为应用性能打分的工作区级资源。它们为离线和在线评估都提供度量层,并依据可用数据调整其输入。因为评估器限定于工作区,你能把一个评估器附到多个追踪项目和数据集而无需每次都重建它。

用以下任一方式运行评估器:

把评估器附到一个追踪项目或数据集

单个评估器能附到许多追踪项目和数据集。像采样率、过滤器和支出限制这样的配置是按每个被附的项目或数据集设置的,而非按评估器。在其 Projects & Datasets 标签下查看一个评估器被附的项目和数据集。

评估器输入

评估器输入因评估类型而异:

离线评估器接收:

  • 示例:来自你数据集的示例,含输入、参考输出和元数据。
  • 运行:在示例输入上运行应用所得的实际输出和中间步骤。

在线评估器接收:

  • 运行:含输入、输出和中间步骤的生产追踪(没有可用的参考输出)。

评估器输出

评估器返回反馈,即评估所得的分数。反馈是一个字典或字典列表。每个字典含:

  • key:指标名。
  • score | value:指标值(数值指标用 score,分类指标用 value)。
  • comment(可选):对该分数的额外推理或解释。

评估技术

LangSmith 支持若干评估方法:

人工

人工评估涉及对应用输出和执行追踪的人工复核。这种方法常是评估的一个有效起点。LangSmith 提供工具来复核应用输出和追踪(所有中间步骤)。

标注队列

标注队列简化对运行的结构化人工反馈收集。它们通过提供带规定评分标准、团队协作功能和进度跟踪的有序工作流,来补充内联标注。

LangSmith 支持两种队列类型:

  • 单运行队列:一次针对自定义评分项复核一个运行。对分诊问题或从生产追踪构建数据集很有用。单运行队列也支持断言,即一个离线评估器可对未来运行打分的自由格式验收标准。
  • 成对队列:并排比较两个运行以判断哪个更好。为实验之间的快速 A/B 比较而设计。

关键功能包括为每个运行配置多个复核者、启用预留以防冲突,以及把已标注运行直接导出到数据集以便未来评估。

代码

代码评估器是确定性的、基于规则的函数。它们很适合诸如验证聊天机器人响应的结构非空、生成的代码能编译,或一个分类精确匹配这样的检查。

LLM 评审

LLM-as-judge 评估器用 LLM 为应用输出打分。打分规则和标准通常编码在 LLM 提示里。这些评估器可以是:

  • 无参考:检查输出是否含冒犯性内容或是否遵守特定标准。
  • 有参考:把输出与一个参考比较(例如检查相对于参考的事实准确性)。

LLM-as-judge 评估器需要仔细复核分数并调优提示。少样本评估器——在打分器提示里包含输入、输出和预期分数的示例——常能提升表现。

了解如何定义一个 LLM-as-a-judge 评估器。

决策模型

决策模型评估器用一个决策模型(例如 SemIf 或 Jev)作为评审。与其用一个提示和一个输出 schema,你定义带类型的问题:一个陈述为真的概率、从固定列表中选一个,或沿有序等级的一个分数。每个问题的回答成为它自己的一条反馈。

了解如何定义一个决策模型评估器。

成对

成对评估器用启发式(例如哪个响应更长)、LLM(配成对提示)或人工复核者来比较两个应用版本的输出。

当直接给一个输出打分很难、而比较两个输出很直接时,成对评估很有效。例如在摘要任务中,从两个摘要里选出信息量更大的那个,往往比对单个摘要赋予一个绝对分数更容易。

了解如何运行成对评估。

无参考对对有参考评估器

理解一个评估器是否需要参考输出,对判断它何时可用至关重要。

无参考评估器在与预期输出比较之外评估质量。这些对离线和在线评估都适用:

  • 安全检查:毒性检测、PII 检测、内容政策违规
  • 格式验证:JSON 结构、必填字段、schema 合规
  • 质量启发式:响应长度、延迟、特定关键词
  • 无参考 LLM 评审:清晰度、连贯性、有用性、语气

有参考评估器需要参考输出且只对离线评估有效:

  • 正确性:与参考答案的语义相似度
  • 事实准确性:对照真实依据做事实核查
  • 精确匹配:带已知标签的分类任务
  • 有参考 LLM 评审:把输出质量与一个参考比较

在设计评估策略时,无参考评估器在离线测试和在线监控之间提供一致性,而有参考评估器在开发期间实现更精确的正确性检查。

评估类型

LangSmith 为开发和部署的不同阶段支持多种评估方法。理解何时用每种类型有助于构建一个全面的评估策略。

离线和在线评估服务于不同目的:

  • 离线评估类型在带参考输出的精选数据集上测试部署前表现
  • 在线评估类型在实时流量上无参考输出地监控生产行为

进一步了解评估类型及何时各用其一。

最佳实践

构建数据集

有多种构建数据集的策略:

手动策划的示例

这是推荐的起点。创建 10–20 个覆盖常见场景和边缘情形的高质量示例。这些示例定义了你的应用里“好”长什么样。

历史追踪

一旦进入生产,就把真实追踪转换为示例。对高流量应用:

  • 用户反馈:把收到负面反馈的运行加入测试对象。
  • 启发式:识别有趣的运行(例如长延迟、错误)。
  • LLM 反馈:用 LLM 检测值得关注的会话。

合成数据

从现有示例生成额外示例。从若干高质量手工示例作为模板开始时效果最好。

数据集组织

划分

划分是数据集的命名子集,用来把示例分段到独立的组。常见模式包括:

  • ML 风格的划分:把示例分成训练、验证和测试集以避免过拟合——模型在训练数据上表现好、在未见过数据上却差。
  • 基于类别的划分:当数据集跨越多个任务类别时,分别评估不同输入类型。
  • 分阶段推出:把探索性示例隔离,直到你准备好把它们纳入主评估集。

划分不同于元数据:用划分做评估的高层组织分组,用元数据做逐示例的信息(如标签和来源)。

在机器学习中,最佳实践是每个示例恰好属于一个划分。LangSmith 允许示例属于多个划分,这在一个示例符合多个评估类别时很有用。

了解如何创建和管理数据集划分。

版本

当示例改变时,LangSmith 会自动创建数据集版本。给版本打标签以标记重要里程碑。在 CI 流水线中锁定特定版本,确保数据集更新不会破坏工作流。

人工反馈收集

人工反馈常提供最有价值的评估,尤其对主观质量维度。

标注队列

标注队列实现结构化的人工反馈收集。标记特定运行以待复核,在一个精简的界面里收集标注,并把已标注运行转移到数据集以便未来评估。

标注队列通过提供额外能力——分组运行、指定标准、配置复核者权限——来补充内联标注。

评估对测试

测试和评估相似但不同的概念。

评估按度量衡量性能。 度量可以模糊或主观,且以相对方式更有用。它们通常把系统彼此比较。

测试断言正确性。 一个系统只有在通过所有测试时才能部署。

评估度量可被转换为测试。例如,回归测试能断言新版本必须在相关度量上胜过基线版本。当系统运行昂贵时,把测试和评估放在一起运行以提高效率。

评估能用像 pytest 或 Vitest/Jest 这样的标准测试工具来编写。

快速参考:离线对在线评估

下表总结离线和在线评估之间的关键差异:

离线评估在线评估
运行于数据集(示例)追踪项目(运行/线程)
数据访问输入、输出、参考输出仅输入、输出
何时使用部署前、开发期间生产、部署后
主要用例基准测试、单元测试、回归测试、回测实时监控、生产反馈、异常检测
评估时机在精选测试集上批处理在实时流量上实时或近实时
设置位置Evaluation 标签(SDK、UI、Playground)Observability 标签(自动化规则)
数据要求需要数据集策划无需数据集,评估实时追踪

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。