LLM-as-Judge 是指用大语言模型来评估另一个模型/系统的输出质量,常用于 RAG、客服机器人、摘要、翻译、代码生成等场景的自动化评测。
下面给你一个实用的使用方法。
1. LLM-as-Judge 适合评估什么
常见评估维度包括:
| 场景 | 评估指标 |
|---|---|
| 问答系统 | 正确性、完整性、相关性 |
| RAG | 是否基于上下文、是否幻觉、引用是否准确 |
| 摘要 | 是否覆盖重点、是否忠实原文、是否简洁 |
| 翻译 | 准确性、流畅性、术语一致性 |
| 客服机器人 | 是否解决问题、语气是否合适、安全合规 |
| 代码生成 | 是否满足需求、是否有 bug、可读性 |
2. 基本流程
LLM-as-Judge 的典型流程如下:
测试问题/任务 ↓ 被评估模型生成答案 ↓ 把问题、参考答案、模型答案、评分标准交给 Judge LLM ↓ Judge LLM 输出分数、理由、标签 ↓ 统计结果,分析问题3. 最简单的 Prompt 模板
假设你要评估一个问答模型,可以这样写 Judge Prompt:
你是一个严格的答案评估员。 请根据以下标准评估模型答案: 评分标准: 1 分:答案完全错误或与问题无关 2 分:答案部分相关,但包含明显错误 3 分:答案基本正确,但不完整 4 分:答案正确且较完整,但有轻微遗漏 5 分:答案完全正确、完整、清晰 问题: {question} 参考答案: {reference_answer} 模型答案: {model_answer} 请输出 JSON 格式: { "score": 1-5, "reason": "评分理由", "errors": ["主要问题1", "主要问题2"] }4. RAG 场景的 Judge Prompt 示例
如果你在评估 RAG 系统,重点不是只看答案是否对,还要看答案是否基于检索到的上下文。
你是一个 RAG 系统评估员。 请基于给定的上下文,评估模型答案。 评估维度: 1. faithfulness:答案是否完全基于上下文,没有编造 2. relevance:答案是否回答了用户问题 3. completeness:答案是否覆盖了上下文中足够的信息 4. citation:如果有引用,引用是否准确 用户问题: {question} 检索上下文: {context} 模型答案: {answer} 请输出 JSON: { "faithfulness": 1-5, "relevance": 1-5, "completeness": 1-5, "citation": 1-5, "overall": 1-5, "reason": "简要说明" }5. Pairwise Judge:两个答案比较
有时候直接打分不稳定,可以让 Judge 比较两个答案。
你是一个公正的评审员。 请比较答案 A 和答案 B,判断哪个更好。 问题: {question} 参考答案: {reference_answer} 答案 A: {answer_a} 答案 B: {answer_b} 评估标准: - 正确性 - 完整性 - 清晰度 - 是否有幻觉 请输出: { "winner": "A" / "B" / "Tie", "reason": "原因" }这种方式适合做模型 A/B 测试。
6. Python 简单示例
下面是一个伪代码示例:
fromopenaiimportOpenAIimportjson client=OpenAI()defjudge_answer(question,reference_answer,model_answer):prompt=f""" 你是一个严格的答案评估员。 评分标准: 1 分:完全错误或无关 2 分:部分相关但有明显错误 3 分:基本正确但不完整 4 分:正确且较完整 5 分:完全正确、完整、清晰 问题:{question}参考答案:{reference_answer}模型答案:{model_answer}请只输出 JSON: {{ "score": 1, "reason": "评分理由", "errors": [] }} """response=client.chat.completions.create(model="gpt-4.1",messages=[{"role":"user","content":prompt}],temperature=0)returnjson.loads(response.choices[0].message.content)result=judge_answer(question="什么是 LLM-as-Judge?",reference_answer="LLM-as-Judge 是使用大语言模型自动评估模型输出质量的方法。",model_answer="它是让大模型像裁判一样给答案评分。")print(result)7. 关键实践建议
1. 尽量使用结构化输出
让 Judge 输出 JSON,方便后续统计。
推荐:
{"score":4,"reason":"...","label":"partially_correct"}不要只让它输出自然语言评价。
2. 明确评分标准
不要只写:
请评价这个答案好不好应该写:
请从正确性、完整性、相关性、清晰度四个维度分别打 1-5 分标准越明确,评估越稳定。
3. 使用 temperature=0
Judge 模型应该尽量稳定:
temperature=0这样同一个样本多次评估结果更一致。
4. 不要让 Judge 看到无关信息
例如评估模型答案时,不要把模型名称告诉 Judge:
这是 GPT-4 的答案 这是某小模型的答案这会带来偏见。
最好匿名化:
答案 A 答案 B5. 使用多 Judge 或多次投票
为了提高可靠性,可以:
- 同一个 Judge 多次评估后取平均
- 使用多个不同 LLM 评估后投票
- 对关键样本加入人工复核
6. 抽样人工校准
LLM-as-Judge 不能完全替代人工评估。
建议:
先人工评估 100-300 条样本 再比较 LLM Judge 和人工评分的一致性如果一致性较高,再大规模自动评估。
8. 常见问题
问题 1:Judge 会不会偏向更长的答案?
会。
所以 Prompt 里应明确:
不要因为答案更长就给更高分,只评估其正确性和完整性。问题 2:Judge 会不会偏向格式更漂亮的答案?
也会。
可以加入:
如果答案内容错误,即使表达清晰也不能高分。问题 3:没有参考答案怎么办?
可以使用无参考评估,例如 RAG 场景中基于上下文判断:
只根据给定上下文评估答案是否被支持。但如果是知识问答,最好还是有参考答案或标准事实。
9. 一个推荐的评分维度
通用问答可以使用:
{"correctness":1-5,"completeness":1-5,"relevance":1-5,"clarity":1-5,"safety":1-5,"overall":1-5}RAG 可以使用:
{"faithfulness":1-5,"answer_relevance":1-5,"context_relevance":1-5,"completeness":1-5,"overall":1-5}10. 总结
使用 LLM-as-Judge 的核心步骤是:
- 准备测试集
- 让被评估模型生成答案
- 设计清晰的评估标准
- 用强模型作为 Judge
- 输出结构化评分
- 与人工评估做一致性校准
- 批量统计分数和失败案例
一句话概括:
LLM-as-Judge 的关键不是“让大模型随便评价”,而是用明确标准、结构化输出和人工校准,让大模型成为可重复的自动评测工具。