Langfuse 文档 中文 英文原文 ↗
文档 / LLM-as-a-Judge

LLM-as-a-Judge

LLM-as-a-Judge 是一种评估方法,用一个 LLM 来评估另一个 LLM 应用所产生输出的质量。你不再仅仅依赖人工审阅者或简单的启发式指标,而是提示一个能力较强的模型(即"评审")按照定义好的标准对应用输出进行打分和推理。

这种方法已经成为评估 LLM 应用最流行的方式之一,因为它把人工判断的细腻与自动化评估的可扩展性结合在了一起。

LLM-as-a-Judge 如何工作

核心思路很直接:把输入、应用的输出和评分标准(rubric)呈现给 LLM,然后让它评估该输出。评审模型会给出一个分数(score),以及解释其评估的推理过程。

一个典型的 LLM-as-a-Judge 提示词包括:

  1. 评估标准 —— 定义什么是"好"的评分标准(例如:"如果答案事实错误打 1 分,如果完全准确且引用充分打 5 分")
  2. 输入上下文 —— 原始用户查询或提示词
  3. 待评估的输出 —— 应用的响应
  4. 可选的参考答案 —— 用于对比的标准答案或预期输出

评审模型随后返回结构化的分数和推理,可以随时间被追踪、聚合和分析。在 Langfuse 中,该分数可以是数值型、分类型或布尔型。对于像有用性这样从 01 的连续判定,使用数值分数。当你想要明确的标签(如 correctpartially_correctincorrect)时,使用分类分数。对于结果为 truefalse 的二元判断——例如用户是否不赞同助手、请求是否超出范围,或答案是否违反政策——使用布尔分数。更多生产监控示例,参见 LLM-as-a-Judge for Production Monitoring

为什么使用 LLM-as-a-Judge?

如何使用 LLM-as-a-Judge?

LLM-as-a-Judge 评估器可以在三类数据上运行:Observations(单个操作)、Traces(完整工作流)或 Experiments(受控测试数据集)。你的选择取决于你是在开发阶段测试还是在监控生产,以及你需要什么粒度的评估。

决策树

需要评估哪类数据?

生产实践模式:团队通常在开发阶段使用 Experiments 验证变更,然后在生产环境部署 Observation 级评估器,进行可扩展、精准的监控。

理解各评估目标

实时生产数据

评估实时生产流量,实时监控你的 LLM 应用性能。

对 traces 中的单个 observations 运行评估器——例如 LLM 调用、检索操作、嵌入生成或工具调用。

Observation 级评估器可用的上下文

Observation 级评估器从匹配的 observation 中映射变量。它们可以使用该 observation 上的字段,如 inputoutputmetadata

它们不会加载同一 trace 中的兄弟或子 observations。如果你的评估器需要应用或 agent 调用的整体请求和响应,请以记录了该整体输入输出的根 observation 为目标。评估器仍然只能看到该根 observation 上的数据;除非你的应用把所需的摘要或上下文写入根 observation,否则不会自动包含子 observations 的数据。

为什么以 Observations 为目标

数据流

在接入时,每个 observation 都会与你的过滤条件进行匹配评估。匹配的 observations 被加入评估队列。评估任务随后异步处理。分数附加到具体的 observation 上,每个评估器对每个 observation 产生一个分数。根据你的过滤条件,可能有多个 observations 匹配,从而每个 trace 产生多个分数。

示例用例

离线实验数据

在受控测试数据集上运行评估器,在可复现的环境中对比模型版本、提示词变体或系统配置。

为什么以 Experiments 为目标

数据流

每次实验运行都会产生 traces,并由你选择的评估器自动打分。把每个实验条目看作一个测试用例:输入 → 执行 → 输出 → 评估。

  1. 创建包含测试输入和(可选)预期输出的数据集。你也可以在本地定义测试数据。
  2. 通过 UI 或 SDK 运行实验——这会为每个数据集条目执行你的应用代码。参见通过 UI 做实验通过 SDK 做实验
  3. 所选评估器自动为生成的输出打分
  4. 跨实验运行对比结果,做出数据驱动的决策

示例用例

逐步配置

在 Langfuse UI 中创建评估器:选择评估目标(observations 或 experiments)、配置过滤与采样、编写评审提示词并定义输出结构,即可让评估器在你的数据上运行。

✨ 完成!你已经成功配置了一个将在你数据上运行的评估器。

需要确定性的自定义逻辑?使用代码评估器,或从外部评估流水线接入分数。

调试 LLM-as-a-Judge 执行

每次 LLM-as-a-Judge 评估器执行都会创建一个完整的 trace,让你对评估过程拥有完整的可见性。这使你能够调试提示词问题、检查模型响应、监控 token 用量,并追踪评估历史。

你可以在追踪表中按环境 langfuse-llm-as-a-judge 过滤,来查看 LLM-as-a-Judge 的执行 traces:

按 langfuse-llm-as-a-judge 环境过滤的追踪表

LLM-as-a-Judge 执行状态
  • Completed:评估成功完成。
  • Error:评估失败(点击执行 trace ID 查看详情)。
  • Delayed:评估触发了 LLM 提供商的速率限制,正在以指数退避重试。
  • Pending:评估已排队,等待运行。

通过 API 编程配置

除了 UI,你还可以通过 public API 以编程方式配置和管理 LLM-as-a-Judge 评估。这对于版本化控制你的评估配置、跨项目复制,或从部署流水线自动化发布非常有用。

配置分为两类资源:

典型的流程是:创建一个评估器,读回它的 variablesoutputDefinition,然后创建一条或多条引用它的评估规则。

这些端点的设计便于编码 agent 探索和调用。以编程方式配置评估器的推荐做法是:把 agent 指向 API 参考,让它为你创建评估器并接好评估规则。

这些端点目前不稳定,在底层评估数据模型重新设计期间可能会变化。完整的请求和响应 schema 参见 EvaluatorsEvaluation Rules API 参考。

进阶主题

从 Trace 级迁移到 Observation 级评估器

如果你有运行在 traces 上的现有评估器,想升级到运行在 observations 上以获得更好的性能和可靠性,请查看我们全面的评估器迁移指南

Observation 级评估器故障排查

如果你的 observation 级评估器没有执行,参见为什么我的 observation 级评估器没有执行?了解常见原因和解决方案。

回填历史 Observation 分数

你可以对 observations 表中的历史数据运行 observation 级 LLM-as-a-Judge。如果你已经接入了生产数据,想用新的或更新的评估器追溯为匹配的 observations 打分,这会很有用。

前提:为该评估器开启 Fast Mode 开关。要在实时接入的新数据上使用同一评估器,请升级到最新 SDK(Python v4+ 或 JS/TS v5+),或者如果你直接通过 OTEL 接入,请在 OTEL span 导出器上设置 x-langfuse-ingestion-version: 4

回填分数的步骤:

  1. 打开 Traces 表。
  2. 过滤到你想回填的时间范围和 trace 条件。使用与评估器目标相同的条件。
  3. 选择匹配的行。
  4. 点击 ActionsEvaluate
  5. 按评估流程对所选 traces 运行评估器,为匹配的 observations 回填分数。

回填 observation 级评估前应用了过滤器的追踪表

此回填流程从 traces 表运行,但产生的分数会附加到每个 trace 内匹配的 observations 上。

常见问题

什么是 LLM-as-a-Judge 评估?

LLM-as-a-Judge 是一种评估方法,由一个大语言模型(即"评审")评估另一个 LLM 应用输出的质量。评审模型被给予输入、应用的输出和评分标准,然后产生带推理的分数。它是最流行的 LLM 应用评估方法之一,因为它结合了类人的细腻与自动化的可扩展性。

与人工评估相比,LLM-as-a-Judge 有多准确?

研究表明,强大的 LLM 评审(如 GPT-5 级别的模型)在许多质量维度上与人工评估者达到 80-90% 的一致性,与人工标注者之间的一致性相当。精心设计的评分标准和清晰的评估标准能显著提升准确性。为获得最佳效果,请用一小组人工标注的示例校准你的 LLM-as-a-Judge 配置。

哪些模型最适合作为 LLM 评审?

能力最强的模型通常产生最好的评估。具有强指令遵循和推理能力的模型(如 GPT-4o、Claude Sonnet 或 Gemini Pro)常被使用。评审模型应支持结构化输出,以便分数能被可靠解析。在 Langfuse 中,你通过 LLM Connections 配置评审模型。

LLM-as-a-Judge 的成本是多少?

成本取决于评审模型和被评估输入的规模。一次典型评估的成本约为每次 $0.01-0.10。你可以通过以下方式管理成本:(1) 使用采样只评估一定比例的 traces,(2) 针对特定 observations 而非完整 traces,(3) 为较简单的评估选择性价比高的评审模型。

LLM-as-a-Judge 能用于 RAG 评估吗?

可以。LLM-as-a-Judge 对 RAG 流水线特别有效。你可以评估忠实度(答案是否基于检索到的上下文?)、相关性(答案是否回应了问题?)和完整性(答案是否覆盖了所有相关信息?)。Langfuse 还集成了 RAGAS,提供专门的 RAG 评估指标。

非官方中文翻译 · 图片/视频/代码均链接官方资源 · 版权归 Langfuse GmbH 所有 查看英文原文 ↗