LLM-as-a-Judge
LLM-as-a-Judge 是一种评估方法,用一个 LLM 来评估另一个 LLM 应用所产生输出的质量。你不再仅仅依赖人工审阅者或简单的启发式指标,而是提示一个能力较强的模型(即"评审")按照定义好的标准对应用输出进行打分和推理。
这种方法已经成为评估 LLM 应用最流行的方式之一,因为它把人工判断的细腻与自动化评估的可扩展性结合在了一起。
LLM-as-a-Judge 如何工作
核心思路很直接:把输入、应用的输出和评分标准(rubric)呈现给 LLM,然后让它评估该输出。评审模型会给出一个分数(score),以及解释其评估的推理过程。
一个典型的 LLM-as-a-Judge 提示词包括:
- 评估标准 —— 定义什么是"好"的评分标准(例如:"如果答案事实错误打 1 分,如果完全准确且引用充分打 5 分")
- 输入上下文 —— 原始用户查询或提示词
- 待评估的输出 —— 应用的响应
- 可选的参考答案 —— 用于对比的标准答案或预期输出
评审模型随后返回结构化的分数和推理,可以随时间被追踪、聚合和分析。在 Langfuse 中,该分数可以是数值型、分类型或布尔型。对于像有用性这样从 0 到 1 的连续判定,使用数值分数。当你想要明确的标签(如 correct、partially_correct 或 incorrect)时,使用分类分数。对于结果为 true 或 false 的二元判断——例如用户是否不赞同助手、请求是否超出范围,或答案是否违反政策——使用布尔分数。更多生产监控示例,参见 LLM-as-a-Judge for Production Monitoring。
为什么使用 LLM-as-a-Judge?
- 可扩展: 相比人工标注者,可以快速评审数千个输出。
- 类人: 比简单指标更能捕捉细微差别(如有用性、毒性、相关性),尤其是在有评分标准指导时。
- 可重复: 使用固定的评分标准,你可以重新运行相同的提示词以获得一致的分数。
如何使用 LLM-as-a-Judge?
LLM-as-a-Judge 评估器可以在三类数据上运行:Observations(单个操作)、Traces(完整工作流)或 Experiments(受控测试数据集)。你的选择取决于你是在开发阶段测试还是在监控生产,以及你需要什么粒度的评估。
决策树
需要评估哪类数据?
- 实时生产数据(监控实时流量)→ 使用 Observations(单个操作:LLM 调用、检索、工具调用)
- 离线实验数据(在受控环境中测试)→ 使用 Experiments(带数据集的受控测试用例)
生产实践模式:团队通常在开发阶段使用 Experiments 验证变更,然后在生产环境部署 Observation 级评估器,进行可扩展、精准的监控。
理解各评估目标
实时生产数据
评估实时生产流量,实时监控你的 LLM 应用性能。
对 traces 中的单个 observations 运行评估器——例如 LLM 调用、检索操作、嵌入生成或工具调用。
Observation 级评估器可用的上下文
Observation 级评估器从匹配的 observation 中映射变量。它们可以使用该 observation 上的字段,如 input、output 和 metadata。
它们不会加载同一 trace 中的兄弟或子 observations。如果你的评估器需要应用或 agent 调用的整体请求和响应,请以记录了该整体输入输出的根 observation 为目标。评估器仍然只能看到该根 observation 上的数据;除非你的应用把所需的摘要或上下文写入根 observation,否则不会自动包含子 observations 的数据。
为什么以 Observations 为目标
- 执行速度显著更快:评估在几秒内完成,而不是几分钟。消除评估延迟和积压。异步架构每分钟可处理数千个评估。
- 操作级精度:按 observation 类型过滤,只评估最终的 LLM 响应或检索步骤,而不是整个工作流。通过针对特定操作,减少评估量和成本。
- 组合式评估:在一个 trace 内对不同操作运行不同评估器。对 LLM 输出评估毒性、对检索评估相关性、对生成评估准确性——同时进行。
- 组合过滤:将 observation 过滤器(类型、名称、metadata)与 trace 过滤器(userId、sessionId、tags、version)叠加。例如:"高级用户中所有标记为 'customer-support' 的对话里的 LLM generations"。
数据流
在接入时,每个 observation 都会与你的过滤条件进行匹配评估。匹配的 observations 被加入评估队列。评估任务随后异步处理。分数附加到具体的 observation 上,每个评估器对每个 observation 产生一个分数。根据你的过滤条件,可能有多个 observations 匹配,从而每个 trace 产生多个分数。
示例用例
- 仅评估给用户的最终聊天机器人响应的有用性
- 监控所有面向客户的 LLM generations 的毒性分数
- 通过针对文档检索 observations,追踪 RAG 系统的检索相关性
离线实验数据
在受控测试数据集上运行评估器,在可复现的环境中对比模型版本、提示词变体或系统配置。
为什么以 Experiments 为目标
- 你需要可复现的基准来做决策
- 对比多个提示词版本或模型配置
- 你拥有带预期输出(标准答案)的数据集
数据流
每次实验运行都会产生 traces,并由你选择的评估器自动打分。把每个实验条目看作一个测试用例:输入 → 执行 → 输出 → 评估。
- 创建包含测试输入和(可选)预期输出的数据集。你也可以在本地定义测试数据。
- 通过 UI 或 SDK 运行实验——这会为每个数据集条目执行你的应用代码。参见通过 UI 做实验或通过 SDK 做实验。
- 所选评估器自动为生成的输出打分
- 跨实验运行对比结果,做出数据驱动的决策
示例用例
- 在 50 个客服问题上对比 GPT-4 与 Claude Opus,评估两者的准确性和有用性,然后部署表现更好的模型
逐步配置
在 Langfuse UI 中创建评估器:选择评估目标(observations 或 experiments)、配置过滤与采样、编写评审提示词并定义输出结构,即可让评估器在你的数据上运行。
✨ 完成!你已经成功配置了一个将在你数据上运行的评估器。
调试 LLM-as-a-Judge 执行
每次 LLM-as-a-Judge 评估器执行都会创建一个完整的 trace,让你对评估过程拥有完整的可见性。这使你能够调试提示词问题、检查模型响应、监控 token 用量,并追踪评估历史。
你可以在追踪表中按环境 langfuse-llm-as-a-judge 过滤,来查看 LLM-as-a-Judge 的执行 traces:

LLM-as-a-Judge 执行状态
- Completed:评估成功完成。
- Error:评估失败(点击执行 trace ID 查看详情)。
- Delayed:评估触发了 LLM 提供商的速率限制,正在以指数退避重试。
- Pending:评估已排队,等待运行。
通过 API 编程配置
除了 UI,你还可以通过 public API 以编程方式配置和管理 LLM-as-a-Judge 评估。这对于版本化控制你的评估配置、跨项目复制,或从部署流水线自动化发布非常有用。
配置分为两类资源:
- Evaluators(评估器) 定义_如何_打分:评审提示词、其变量、结构化输出定义(数值、布尔或分类),以及可选的模型配置。评估器是版本化的——在现有名称下创建会产生下一个版本,激活的规则会自动迁移到新版本。
- Evaluation rules(评估规则) 定义_评估什么_:目标(实时 observations 或 experiments)、过滤器、采样率,以及从你的数据到评估器变量的映射。每条规则通过
name和scope引用一个评估器系列。tool_calls映射源对两种目标都可用。
典型的流程是:创建一个评估器,读回它的 variables 和 outputDefinition,然后创建一条或多条引用它的评估规则。
这些端点的设计便于编码 agent 探索和调用。以编程方式配置评估器的推荐做法是:把 agent 指向 API 参考,让它为你创建评估器并接好评估规则。
这些端点目前不稳定,在底层评估数据模型重新设计期间可能会变化。完整的请求和响应 schema 参见 Evaluators 和 Evaluation 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。
回填分数的步骤:
- 打开 Traces 表。
- 过滤到你想回填的时间范围和 trace 条件。使用与评估器目标相同的条件。
- 选择匹配的行。
- 点击 Actions → Evaluate。
- 按评估流程对所选 traces 运行评估器,为匹配的 observations 回填分数。

此回填流程从 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 评估指标。