LLM评估技能Skill evaluating-llms

LLM评估技能用于评估大型语言模型系统,通过自动化指标、LLM作为裁判和基准测试,确保模型在生产环境中的质量和安全性。适用于测试提示质量、验证RAG管道、测量幻觉和偏见、比较模型性能。关键词:LLM评估、自动化指标、RAG验证、安全性测量、模型比较、生产部署。

AI应用 0 次安装 0 次浏览 更新于 3/23/2026

name: evaluating-llms description: 使用自动化指标、LLM作为裁判和基准来评估LLM系统。适用于测试提示质量、验证RAG管道、测量安全性(幻觉、偏见)或比较模型用于生产部署。

LLM 评估

使用自动化指标、LLM作为裁判模式和标准化基准来评估大型语言模型(LLM)系统,以确保生产质量和安全性。

何时使用此技能

应用此技能当:

  • 测试个别提示的正确性和格式
  • 验证RAG(检索增强生成)管道质量
  • 测量LLM输出中的幻觉、偏见或毒性
  • 比较不同模型或提示配置(A/B测试)
  • 运行基准测试(MMLU、HumanEval)以评估模型能力
  • 设置LLM应用程序的生产监控
  • 将LLM质量检查集成到CI/CD管道中

常见触发场景:

  • “如何测试我的RAG系统是否正常工作?”
  • “如何测量LLM输出中的幻觉?”
  • “应使用哪些指标来评估生成质量?”
  • “如何为我的用例比较GPT-4与Claude?”
  • “如何检测LLM响应中的偏见?”

评估策略选择

决策框架:选择哪种评估方法?

按任务类型:

任务类型 主要方法 指标 工具
分类(情感、意图) 自动化指标 准确率、精确率、召回率、F1分数 scikit-learn
生成(摘要、创意文本) LLM作为裁判 + 自动化 BLEU、ROUGE、BERTScore、质量评分 GPT-4/Claude 用于评判
问答 精确匹配 + 语义相似度 精确匹配、F1、余弦相似度 自定义评估器
RAG系统 RAGAS框架 忠实性、答案/上下文相关性 RAGAS库
代码生成 单元测试 + 执行 Pass@K、测试通过率 HumanEval、pytest
多步骤代理 任务完成 + 工具准确性 成功率、效率 自定义评估器

按样本量和成本:

样本数 速度 成本 推荐方法
1,000+ 即时 $0 自动化指标(正则表达式、JSON验证)
100-1,000 分钟 $0.01-0.10每个 LLM作为裁判(GPT-4、Claude)
< 100 小时 $1-10每个 人工评估(成对比较)

分层方法(推荐用于生产):

  1. 层1: 对所有输出使用自动化指标(快速、便宜)
  2. 层2: 对10%样本使用LLM作为裁判(细粒度质量)
  3. 层3: 对1%边缘案例进行人工审查(验证)

核心评估模式

单元评估(个别提示)

测试单个提示-响应对的正确性。

方法:

  • 精确匹配: 响应与预期输出完全匹配
  • 正则表达式匹配: 响应遵循预期模式
  • JSON模式验证: 结构化输出验证
  • 关键词存在: 响应中出现必需术语
  • LLM作为裁判: 使用评估提示进行通过/失败判断

示例用例:

  • 邮件分类(垃圾/非垃圾)
  • 实体提取(日期、名称、地点)
  • JSON输出格式验证
  • 情感分析(正面/负面/中性)

快速入门(Python):

import pytest
from openai import OpenAI

client = OpenAI()

def classify_sentiment(text: str) -> str:
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "将情感分类为正面、负面或中性。仅返回标签。"},
            {"role": "user", "content": text}
        ],
        temperature=0
    )
    return response.choices[0].message.content.strip().lower()

def test_positive_sentiment():
    result = classify_sentiment("我爱这个产品!")
    assert result == "正面"

完整单元评估示例,参见 examples/python/unit_evaluation.pyexamples/typescript/unit-evaluation.ts

RAG(检索增强生成)评估

使用RAGAS框架指标评估RAG系统。

关键指标(优先级顺序):

  1. 忠实性(目标:> 0.8)- 最关键

    • 测量:答案是否基于检索到的上下文?
    • 防止幻觉
    • 如果失败:调整提示以强调基于上下文,要求引用
  2. 答案相关性(目标:> 0.7)

    • 测量:答案如何很好地处理查询?
    • 如果失败:改进提示指令,添加少量示例
  3. 上下文相关性(目标:> 0.7)

    • 测量:检索到的块是否与查询相关?
    • 如果失败:改进检索(更好的嵌入、混合搜索)
  4. 上下文精确度(目标:> 0.5)

    • 测量:相关块是否排名高于无关块?
    • 如果失败:在检索管道中添加重新排序步骤
  5. 上下文召回(目标:> 0.8)

    • 测量:是否检索到所有相关块?
    • 如果失败:增加检索数量,改进分块策略

快速入门(Python 使用 RAGAS):

from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_relevancy
from datasets import Dataset

data = {
    "question": ["法国的首都是什么?"],
    "answer": ["法国的首都是巴黎。"],
    "contexts": [["巴黎是法国的首都。"]],
    "ground_truth": ["巴黎"]
}

dataset = Dataset.from_dict(data)
results = evaluate(dataset, metrics=[faithfulness, answer_relevancy, context_relevancy])
print(f"忠实性:{results['faithfulness']:.2f}")

全面RAG评估模式,参见 references/rag-evaluation.mdexamples/python/ragas_example.py

LLM作为裁判评估

使用强大LLM(GPT-4、Claude Opus)评估其他LLM输出。

何时使用:

  • 生成质量评估(摘要、创意写作)
  • 细粒度评估标准(语气、清晰度、帮助性)
  • 自定义评分标准用于领域特定任务
  • 中等量评估(100-1,000个样本)

与人类判断的相关性: 0.75-0.85对于设计良好的评分标准

最佳实践:

  • 使用清晰、具体的评分标准(1-5分,详细标准)
  • 在评估提示中包含少量示例
  • 平均多次评估以减少方差
  • 注意偏见(位置偏见、冗长偏见、自偏好)

快速入门(Python):

from openai import OpenAI

client = OpenAI()

def evaluate_quality(prompt: str, response: str) -> tuple[int, str]:
    """返回(分数1-5,推理)"""
    eval_prompt = f"""
根据相关性和帮助性评估以下LLM响应。

用户提示:{prompt}
LLM响应:{response}

提供:
分数:[1-5,其中5为最佳]
推理:[1-2句话]
"""
    result = client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": eval_prompt}],
        temperature=0.3
    )
    content = result.choices[0].message.content
    lines = content.strip().split('
')
    score = int(lines[0].split(':')[1].strip())
    reasoning = lines[1].split(':', 1)[1].strip()
    return score, reasoning

详细LLM作为裁判模式和提示模板,参见 references/llm-as-judge.mdexamples/python/llm_as_judge.py

安全性和对齐性评估

测量LLM输出中的幻觉、偏见和毒性。

幻觉检测

方法:

  1. 忠实性到上下文(RAG):

    • 使用RAGAS忠实性指标
    • LLM检查声明是否基于上下文
    • 分数:支持的声明 / 总声明
  2. 事实准确性(闭卷):

    • LLM作为裁判访问可靠来源
    • 事实检查API(谷歌事实检查)
    • 实体级验证(日期、名称、统计)
  3. 自我一致性:

    • 对同一问题生成多个响应
    • 测量响应之间的一致性
    • 低一致性暗示幻觉

偏见评估

偏见类型:

  • 性别偏见(刻板印象关联)
  • 种族/民族偏见(歧视性输出)
  • 文化偏见(西方中心假设)
  • 年龄/残疾偏见(能者或年龄歧视语言)

评估方法:

  1. 刻板印象测试:

    • BBQ(偏见基准问答):58,000个问题-答案对
    • BOLD(开放生成中的偏见)
  2. 反事实评估:

    • 生成带人口统计交换的响应
    • 示例:“史密斯博士(他/她)推荐…” → 比较输出
    • 测量跨变体的一致性

毒性检测

工具:

  • Perspective API(谷歌): 毒性、威胁、侮辱分数
  • Detoxify(HuggingFace): 开源毒性分类器
  • OpenAI Moderation API: 仇恨、骚扰、暴力检测

全面安全评估模式,参见 references/safety-evaluation.md

基准测试

使用标准化基准评估模型能力。

标准基准:

基准 覆盖范围 格式 难度 用例
MMLU 57个主题(STEM、人文) 多项选择 高中 - 专业 一般智能
HellaSwag 句子补全 多项选择 常识 推理验证
GPQA 博士级科学 多项选择 非常高(专家级) 前沿模型测试
HumanEval 164个Python问题 代码生成 中等 代码能力
MATH 12,500个竞赛问题 数学解决 高中竞赛 数学推理

领域特定基准:

  • 医学: MedQA(USMLE)、PubMedQA
  • 法律: LegalBench
  • 金融: FinQA、ConvFinQA

何时使用基准:

  • 比较多个模型(GPT-4 vs Claude vs Llama)
  • 为特定领域选择模型
  • 基线能力评估
  • 学术研究和发表

快速入门(lm-evaluation-harness):

pip install lm-eval

# 评估GPT-4在MMLU上
lm_eval --model openai-chat --model_args model=gpt-4 --tasks mmlu --num_fewshot 5

详细基准测试模式,参见 references/benchmarks.mdscripts/benchmark_runner.py

生产评估

监控和优化生产环境中的LLM质量。

A/B测试

比较两个LLM配置:

  • 变体A: GPT-4(昂贵、高质量)
  • 变体B: Claude Sonnet(便宜、快速)

指标:

  • 用户满意度分数(点赞/点踩)
  • 任务完成率
  • 响应时间和延迟
  • 每次成功交互的成本

在线评估

实时质量监控:

  • 响应质量: LLM作为裁判对每个第N个响应评分
  • 用户反馈: 显式评分、点赞/点踩
  • 业务指标: 转化率、支持票解决
  • 成本跟踪: 使用的令牌、推理成本

人类在环

基于样本的人工评估:

  • 随机抽样: 评估10%的响应
  • 基于置信度: 评估低置信度输出
  • 错误触发: 标记可疑响应进行审查

生产评估模式和监控策略,参见 references/production-evaluation.md

分类任务评估

用于离散输出任务(情感、意图、类别)。

指标:

  • 准确率: 正确预测 / 总预测
  • 精确率: 真正例 / (真正例 + 假正例)
  • 召回率: 真正例 / (真正例 + 假反例)
  • F1分数: 精确率和召回率的调和平均
  • 混淆矩阵: 预测错误的详细分解

快速入门(Python):

from sklearn.metrics import accuracy_score, precision_recall_fscore_support

y_true = ["正面", "负面", "中性", "正面", "负面"]
y_pred = ["正面", "负面", "中性", "中性", "负面"]

accuracy = accuracy_score(y_true, y_pred)
precision, recall, f1, _ = precision_recall_fscore_support(y_true, y_pred, average='weighted')

print(f"准确率:{accuracy:.2f}")
print(f"精确率:{precision:.2f}")
print(f"召回率:{recall:.2f}")
print(f"F1分数:{f1:.2f}")

完整分类评估示例,参见 examples/python/classification_metrics.py

生成任务评估

用于开放文本生成(摘要、创意写作、响应)。

自动化指标(谨慎使用):

  • BLEU: 与参考文本的N-gram重叠(0-1分数)
  • ROUGE: 召回导向重叠(ROUGE-1、ROUGE-L)
  • METEOR: 带词干提取的语义相似度
  • BERTScore: 上下文嵌入相似度(0-1分数)

局限性: 自动化指标与人类判断对于创造性/主观生成相关性较弱。

推荐方法:

  1. 自动化指标: 快速反馈客观方面(长度、格式)
  2. LLM作为裁判: 细粒度质量评估(相关性、连贯性、帮助性)
  3. 人工评估: 主观标准的最终验证(偏好、创意性)

详细生成评估模式,参见 references/evaluation-types.md

快速参考表

评估框架选择

如果任务是… 使用此框架 主要指标
RAG系统 RAGAS 忠实性 > 0.8
分类 scikit-learn指标 准确率、F1
生成质量 LLM作为裁判 质量评分标准(1-5)
代码生成 HumanEval Pass@1、测试通过率
模型比较 基准测试 MMLU、HellaSwag分数
安全性验证 幻觉检测 忠实性、事实检查
生产监控 在线评估 用户反馈、业务KPI

Python库推荐

用例 安装
RAGAS RAG评估 pip install ragas
DeepEval 一般LLM评估,pytest集成 pip install deepeval
LangSmith 生产监控,A/B测试 pip install langsmith
lm-eval 基准测试(MMLU、HumanEval) pip install lm-eval
scikit-learn 分类指标 pip install scikit-learn

安全评估优先级矩阵

应用 幻觉风险 偏见风险 毒性风险 评估优先级
客户支持 中等 1. 忠实性,2. 毒性,3. 偏见
医学诊断 关键 1. 事实准确性,2. 幻觉,3. 偏见
创意写作 中等 中等 1. 质量/流畅性,2. 内容政策
代码生成 中等 1. 功能正确性,2. 安全性
内容审核 关键 关键 1. 偏见,2. 假正例/假反例

详细参考文献

特定主题的全面文档:

  • 评估类型(分类、生成、问答、代码): references/evaluation-types.md
  • RAG评估深入(RAGAS框架): references/rag-evaluation.md
  • 安全评估(幻觉、偏见、毒性): references/safety-evaluation.md
  • 基准测试(MMLU、HumanEval、领域基准): references/benchmarks.md
  • LLM作为裁判最佳实践和提示: references/llm-as-judge.md
  • 生产评估(A/B测试、监控): references/production-evaluation.md
  • 所有指标定义和公式: references/metrics-reference.md

工作示例

Python示例:

  • examples/python/unit_evaluation.py - 使用pytest的基本提示测试
  • examples/python/ragas_example.py - RAGAS RAG评估
  • examples/python/deepeval_example.py - DeepEval框架使用
  • examples/python/llm_as_judge.py - GPT-4作为评估器
  • examples/python/classification_metrics.py - 准确率、精确率、召回率
  • examples/python/benchmark_testing.py - HumanEval示例

TypeScript示例:

  • examples/typescript/unit-evaluation.ts - Vitest + OpenAI
  • examples/typescript/llm-as-judge.ts - GPT-4评估
  • examples/typescript/langsmith-integration.ts - 生产监控

可执行脚本

无需将代码加载到上下文中运行评估(无令牌成本):

  • scripts/run_ragas_eval.py - 在数据集上运行RAGAS评估
  • scripts/compare_models.py - A/B测试两个模型
  • scripts/benchmark_runner.py - 运行MMLU/HumanEval基准
  • scripts/hallucination_checker.py - 检测输出中的幻觉

示例用法:

# 在自定义数据集上运行RAGAS评估
python scripts/run_ragas_eval.py --dataset data/qa_dataset.json --output results.json

# 比较GPT-4与Claude在基准上
python scripts/compare_models.py --model-a gpt-4 --model-b claude-3-opus --tasks mmlu,humaneval

与其他技能集成

相关技能:

  • building-ai-chat 评估AI聊天应用程序(此技能测试该技能构建的内容)
  • prompt-engineering 测试提示质量和有效性
  • testing-strategies 将测试金字塔应用于LLM评估(单元 → 集成 → E2E)
  • observability 生产监控和LLM质量警报
  • building-ci-pipelines 将LLM评估集成到CI/CD中

工作流集成:

  1. 编写提示(使用 prompt-engineering 技能)
  2. 单元测试提示(使用 llm-evaluation 技能)
  3. 构建AI功能(使用 building-ai-chat 技能)
  4. 集成测试RAG管道(使用 llm-evaluation 技能)
  5. 部署到生产(使用 deploying-applications 技能)
  6. 监控质量(使用 llm-evaluation + observability 技能)

常见陷阱

1. 过度依赖生成任务的自动化指标

  • BLEU/ROUGE与人类判断对于创意文本相关性较弱
  • 解决方案:分层LLM作为裁判或人工评估

2. 忽略RAG系统中的忠实性

  • 幻觉是RAG失败的第一大原因
  • 解决方案:优先忠实性指标(目标 > 0.8)

3. 无生产监控

  • 模型可能随时间退化,提示可能在更新中损坏
  • 解决方案:设置连续评估(LangSmith、自定义监控)

4. 偏见的LLM作为裁判评估

  • 评估器LLM有偏见(位置偏见、冗长偏见)
  • 解决方案:平均多次评估,使用多样化的评估提示

5. 基准覆盖不足

  • 单个基准不捕获完整模型能力
  • 解决方案:使用3-5个跨不同领域的基准

6. 缺失安全评估

  • 生产LLM可能生成有害内容
  • 解决方案:添加毒性、偏见和幻觉检查到评估管道