> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 评估类型

本页面涵盖 LangSmith 中评估的两个方面：

1. **[评估类型](#离线评估类型)**：\_何时以及为何\_要进行评估。用于部署前测试的离线评估类型（基准测试、单元测试、回归测试），以及用于生产环境的在线评估类型（监控、异常检测）。
2. **[评估器实现](#实现评估器)**：\_如何\_进行评估。可用的评估器方法（LLM-as-judge、代码、复合、摘要、成对）以及在哪里配置它们（UI 或 SDK，离线或在线）。

理解这两个方面有助于您构建全面的评估策略，在部署前验证功能并在生产环境中监控质量。

## 离线评估类型

离线评估在部署前使用精选数据集测试应用程序。通过在具有参考输出的示例上运行评估，团队可以比较版本、验证功能，并在向用户公开更改之前建立信心。

使用 LangSmith SDK（[Python](https://reference.langchain.com/python/langsmith/observability/sdk/) 或 [TypeScript](https://reference.langchain.com/javascript/modules/langsmith.html)）在客户端运行离线评估，或通过 [Playground](/langsmith/prompt-engineering-concepts#playground) 或 [将评估器绑定到数据集](/langsmith/bind-evaluator-to-dataset) 在服务器端运行。

<img src="https://mintcdn.com/other-405835d4/X4LKQZjW6RjHveuz/langsmith/images/offline.png?fit=max&auto=format&n=X4LKQZjW6RjHveuz&q=85&s=fe1fcb0e4a3c9cd6597f495665f32b90" alt="离线评估" width="1581" height="477" data-path="langsmith/images/offline.png" />

### 基准测试

*基准测试* 在精选数据集上比较多个应用程序版本，以确定最佳性能者。此过程包括创建具有代表性输入的数据集、定义性能指标并测试每个版本。

基准测试需要具有黄金标准参考输出的数据集和精心设计的比较指标。示例：

* **RAG 问答机器人**：包含问题和参考答案的数据集，使用 LLM-as-judge 评估器检查实际答案与参考答案之间的语义等价性。
* **ReACT 代理**：包含用户请求和参考工具调用的数据集，使用启发式评估器验证是否进行了所有预期的工具调用。

### 单元测试

*单元测试* 验证单个系统组件的正确性。在 LLM 背景下，[单元测试通常是基于规则的断言](https://hamel.dev/blog/posts/evals/#level-1-unit-tests)，针对输入或输出（例如，验证 LLM 生成的代码是否可编译、JSON 是否成功加载）以验证基本功能。

单元测试通常期望一致的通过结果，使其适用于 CI 流水线。在 CI 中运行时，配置缓存以最小化 LLM API 调用及相关成本。

更多详情，请参阅 [Pytest](/langsmith/pytest) 和 [Vitest/Jest](/langsmith/vitest-jest) 页面。

### 回归测试

*回归测试* 衡量应用程序版本随时间推移的性能一致性。它们确保新版本不会降低当前版本正确处理的用例的性能，并且理想情况下展示相对于基线的改进。这些测试通常在进行预期会影响用户体验的更新（例如，模型或架构更改）时运行。

LangSmith 的比较视图突出显示相对于基线的回归（红色）和改进（绿色），从而能够快速识别变化。

<img src="https://mintcdn.com/other-405835d4/qGIFx6qJGHuQoTQQ/langsmith/images/comparison-diff-view-light.png?fit=max&auto=format&n=qGIFx6qJGHuQoTQQ&q=85&s=561eb832f81a8f430f09e47f60fd4da0" alt="比较视图" width="1038" height="758" data-path="langsmith/images/comparison-diff-view-light.png" />

### 回测

*回测* 使用历史生产数据评估新的应用程序版本。生产日志被转换为数据集，然后较新版本处理这些示例，以评估其在过去的、真实的用户输入上的性能。

这种方法通常用于评估新的模型版本。例如，当新模型可用时，在最近的生产运行上对其进行测试，并将结果与实际生产结果进行比较。

### 成对评估

*成对评估* 通过确定相对质量而非分配绝对分数来比较两个版本的输出。对于某些任务，[确定“版本 A 优于 B”](https://www.oreilly.com/radar/what-we-learned-from-a-year-of-building-with-llms-part-i/) 比独立评分每个版本更容易。

这种方法对于主观任务上的 LLM-as-judge 评估特别有用。例如，在摘要任务中，确定“哪个摘要更清晰、更简洁？”通常比分配数字清晰度分数更简单。

了解[如何运行成对评估](/langsmith/evaluate-pairwise)。

## 在线评估类型

在线评估近乎实时地评估生产应用程序的输出。在没有参考输出的情况下，这些评估侧重于检测问题、监控质量趋势以及识别为未来离线测试提供信息的边缘案例。

在线评估器通常在服务器端运行。LangSmith 提供内置的 [LLM-as-judge 评估器](/langsmith/llm-as-judge) 供配置，并支持在 LangSmith 内运行的自定义代码评估器。

<img src="https://mintcdn.com/other-405835d4/4uxGFmQj9AQhEaXK/langsmith/images/online.png?fit=max&auto=format&n=4uxGFmQj9AQhEaXK&q=85&s=64d67a98296b0ba2e01f3fa0ecf9a4cf" alt="在线评估" width="1474" height="521" data-path="langsmith/images/online.png" />

### 实时监控

在用户与系统交互时持续监控应用程序质量。在线评估自动在生产流量上运行，为每次交互提供即时反馈。这使得能够在质量下降、异常模式或意外行为影响大量用户群体之前检测到它们。

### 异常检测

识别偏离预期模式的异常值和边缘案例。在线评估器可以标记具有异常特征的运行——响应时间极长或极短、意外的错误率或未通过安全检查的输出——供人工审查并可能添加到离线数据集中。

### 生产反馈循环

利用生产中的洞察来改进离线评估。在线评估揭示了可能不会出现在精选数据集中的现实世界问题和使用模式。失败的生产运行成为数据集示例的候选，创建了一个迭代循环，其中生产经验不断优化测试覆盖范围。

## 实现评估器

上述评估类型描述了\_何时\_进行评估。LangSmith 提供了几种方法来\_如何\_实现适用于这些评估类型的评估器。

### LLM-as-a-judge

使用 LLM 根据提示中定义的标准对输出进行评分。这种方法适用于主观质量，如语气、清晰度或语义正确性，这些很难用确定性规则来捕捉。

常见用例包括评估与参考输出的事实准确性（离线）或检查生产响应中的毒性（在线）。例如，对 RAG 系统进行基准测试时，可能会使用 LLM-as-judge 评估器来检查生成答案与参考答案之间的语义等价性。

配置 LLM-as-a-judge 评估器用于：

* 程序化离线评估：[使用 SDK](/langsmith/llm-as-judge-sdk)
* 在数据集上进行离线评估：[在 UI 中](/langsmith/llm-as-judge)
* 在生产跟踪上进行在线评估：[在 UI 中](/langsmith/online-evaluations-llm-as-judge)

### 代码评估器

编写确定性的、基于规则的函数来检查特定条件。这些评估器执行自定义逻辑以验证结构、检查模式或应用业务规则。

代码评估器对于单元测试特别有用——验证生成的代码是否可编译、JSON 是否正确解析或必需字段是否存在。在回归测试中，它们可以跟踪结构化输出的一致性。对于在线监控，它们可以实时捕获格式违规。

定义代码评估器用于：

* 在数据集上进行离线评估：[在 UI 中](/langsmith/code-evaluator-ui)
* 程序化离线评估：[使用 SDK](/langsmith/code-evaluator-sdk)
* 在生产跟踪上进行在线评估：[在 UI 中](/langsmith/online-evaluations-code)

### 复合评估器

使用加权平均值或总和将多个评估器分数组合成单个指标。这创建了反映多个评估标准的聚合质量分数。

对于基准测试，复合分数有助于在多个维度上比较版本（例如，70% 准确性 + 20% 清晰度 + 10% 简洁性）。在在线监控中，它们为仪表板和警报提供单一指标。例如，将整体聊天机器人质量跟踪为有用性、正确性和语气分数的加权组合。

设置复合评估器用于：

* 使用预定义聚合进行离线评估：[在 UI 中](/langsmith/composite-evaluators-ui)
* 使用自定义聚合逻辑进行离线评估：[使用 SDK](/langsmith/composite-evaluators-sdk)
* 在生产跟踪上进行在线评估：[在 UI 中](/langsmith/online-evaluations-composite)

### 摘要评估器

计算整个实验的指标，而非单个示例。这些评估器接收数据集的所有输出，并计算聚合统计信息，如精确率、召回率、F1 分数或分布分析。

当您需要数据集级别的指标时，摘要评估器对于基准测试至关重要——比较版本之间的整体性能，而非逐个示例的分数。它们仅适用于离线评估，因为它们需要处理完整的数据集。

实现摘要评估器用于：

* 用于离线评估的自定义聚合函数：[使用 SDK](/langsmith/summary)

### 成对评估器

比较两个版本的输出以确定相对质量。这种方法在前面的[成对评估](#成对评估)部分有所介绍，当绝对评分困难但确定“哪个更好”很简单时很有帮助。

运行成对评估用于：

* 比较现有实验：[使用 SDK](/langsmith/evaluate-pairwise)

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档连接](/use-these-docs)到 Claude、VSCode 等，通过 MCP 获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/langsmith/evaluation-types.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
