mcpField
E
evaluating-llms

evaluating-llms

github.com/ancoleman测试与质量52597 次安装46 周前更新
代码仓库

关于 evaluating-llms

面向工程师的 LLM 评估技能,涵盖提示词测试、RAG 质量、安全性、基准测试和生产监控,并提供自动指标、LLM 评审及人工复核方法。

主要功能

  1. 01自动指标与 LLM 评审
  2. 02使用 RAGAS 评估 RAG
  3. 03检测幻觉、偏见与毒性
  4. 04运行标准基准测试
  5. 05生产监控与 A/B 测试

适用场景

  1. 01验证提示词输出及格式
  2. 02衡量 RAG 流程质量
  3. 03比较模型或提示词配置
  4. 04监控生产环境中的 LLM 应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ancoleman/ai-design-components --skill evaluating-llms

安装后在 Claude Code 中输入/evaluating-llms确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

outputs.yaml
examples/python/
benchmark_testing.py
classification_metrics.py
deepeval_example.py
llm_as_judge.py
ragas_example.py
unit_evaluation.py
examples/typescript/
langsmith-integration.ts
llm-as-judge.ts
unit-evaluation.ts
references/
benchmarks.md
evaluation-types.md
llm-as-judge.md
metrics-reference.md
production-evaluation.md
rag-evaluation.md
safety-evaluation.md

详细介绍

大模型评估

使用自动化指标、大模型裁判模式和标准化基准测试来评估大语言模型(LLM)系统,确保其达到生产质量和安全要求。

何时使用此技能

在以下情况下使用此技能:

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

常见触发问题:

  • “如何测试我的 RAG 系统是否正常工作?”
  • “如何衡量大模型输出中的幻觉?”
  • “应该使用哪些指标来评估生成质量?”
  • “如何针对我的使用场景比较 GPT-4 和 Claude?”
  • “如何检测大模型响应中的偏见?”

评估策略选择

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

按任务类型划分:

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

按样本量和成本划分:

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

分层方法(生产环境推荐):

  1. 第 1 层: 对所有输出使用自动化指标(快速、低成本)
  2. 第 2 层: 对 10% 的样本使用大模型裁判(评估细微的质量差异)
  3. 第 3 层: 人工审查 1% 的边缘案例(验证)

核心评估模式

单元评估(单个提示词)

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

方法:

  • 精确匹配: 响应与预期输出完全一致
  • 正则匹配: 响应符合预期模式
  • JSON Schema 验证: 验证结构化输出
  • 关键词检查: 响应中包含必需词语
  • 大模型裁判: 使用评估提示词进行二元通过/失败判定

快速入门(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": "Classify sentiment as positive, negative, or neutral. Return only the label."},
            {"role": "user", "content": text}
        ],
        temperature=0
    )
    return response.choices[0].message.content.strip().lower()

def test_positive_sentiment():
    result = classify_sentiment("I love this product!")
    assert result == "positive"

完整的单元评估示例请参阅 examples/python/unit_evaluation.py 和 examples/typescript/unit-evaluation.ts。

RAG(检索增强生成)评估

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

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

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

    • 衡量:答案是否以检索到的上下文为依据?
    • 防止幻觉
    • 如果未达标:调整提示词以强调依据上下文作答,并要求提供引用
  2. 答案相关性(目标:> 0.7)

    • 衡量:答案在多大程度上回应了查询?
    • 如果未达标:改进提示词说明,添加少样本示例
  3. 上下文相关性(目标:> 0.7)

    • 衡量:检索到的文本块是否与查询相关?
    • 如果未达标:改进检索(使用更好的嵌入、混合搜索)
  4. 上下文精确率(目标:> 0.5)

    • 衡量:相关文本块的排名是否高于不相关文本块?
    • 如果未达标:在检索流水线中添加重排序步骤
  5. 上下文召回率(目标:> 0.8)

    • 衡量:是否检索到了所有相关文本块?
    • 如果未达标:增加检索数量,改进文本分块策略

快速开始(使用 RAGAS 的 Python):

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

data = {
    "question": ["What is the capital of France?"],
    "answer": ["The capital of France is Paris."],
    "contexts": [["Paris is the capital of France."]],
    "ground_truth": ["Paris"]
}

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

如需了解全面的 RAG 评估模式,请参阅 references/rag-evaluation.md 和 examples/python/ragas_example.py。

LLM 作为评判者的评估

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

适用场景:

  • 生成质量评估(摘要、创意写作)
  • 细致的评估标准(语气、清晰度、实用性)
  • 针对特定领域任务的自定义评分标准
  • 中等规模的评估(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]:
    """Returns (score 1-5, reasoning)"""
    eval_prompt = f"""
Rate the following LLM response on relevance and helpfulness.

USER PROMPT: {prompt}
LLM RESPONSE: {response}

Provide:
Score: [1-5, where 5 is best]
Reasoning: [1-2 sentences]
"""
    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('\n')
    score = int(lines[0].split(':')[1].strip())
    reasoning = lines[1].split(':', 1)[1].strip()
    return score, reasoning

如需了解详细的 LLM 评判模式和提示词模板,请参阅 references/llm-as-judge.md 和 examples/python/llm_as_judge.py。

安全与对齐评估

衡量大模型输出中的幻觉、偏见和毒性。

幻觉检测

方法:

  1. 对上下文的忠实度(RAG):

    • 使用 RAGAS 忠实度指标
    • 由大模型检查陈述是否得到上下文支持
    • 得分:有支持的陈述数 / 陈述总数
  2. 事实准确性(闭卷):

    • 使用可访问可靠来源的大模型评判者
    • 事实核查 API(Google Fact Check)
    • 实体级验证(日期、姓名、统计数据)
  3. 自一致性:

    • 针对同一问题生成多个回答
    • 衡量回答之间的一致程度
    • 一致性低可能意味着存在幻觉
偏见评估

偏见类型:

  • 性别偏见(刻板关联)
  • 种族/族裔偏见(歧视性输出)
  • 文化偏见(以西方为中心的假设)
  • 年龄/残障偏见(歧视残障者或年龄歧视的语言)

评估方法:

  1. 刻板印象测试:

    • BBQ(QA 偏见基准):58,000 组问答对
    • BOLD(开放式语言生成中的偏见)
  2. 反事实评估:

    • 通过替换人口统计属性生成回答
    • 示例:“Dr. Smith(他/她)建议……”→ 比较输出
    • 衡量不同变体之间的一致性
毒性检测

工具:

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

如需了解全面的安全评估模式,请参阅 references/safety-evaluation.md。

基准测试

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

标准基准:

基准覆盖范围格式难度用途
MMLU57 个学科(STEM、人文学科)选择题高中至专业级通用智能
HellaSwag句子补全选择题常识推理能力验证
GPQA博士级科学知识选择题极高(专家级)前沿模型测试
HumanEval164 道 Python 题目代码生成中等代码能力
MATH12,500 道竞赛题目数学求解高中竞赛数学推理

特定领域基准:

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

适用场景:

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

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

pip install lm-eval

# Evaluate GPT-4 on MMLU
lm_eval --model openai-chat --model_args model=gpt-4 --tasks mmlu --num_fewshot 5

有关详细的基准测试模式,请参阅 references/benchmarks.md 和 scripts/benchmark_runner.py。

生产环境评估

在生产环境中监控并优化大模型质量。

A/B 测试

比较两种大模型配置:

  • 变体 A: GPT-4(成本高、质量高)
  • 变体 B: Claude Sonnet(成本较低、速度快)

指标:

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

实时质量监控:

  • 响应质量: 使用大模型作为评判者,对每第 N 条响应进行评分
  • 用户反馈: 明确评分、点赞/点踩
  • 业务指标: 转化率、支持工单解决率
  • 成本跟踪: 使用的 Token 数、推理成本
人工参与评估

基于抽样的人工评估:

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

有关生产环境评估模式和监控策略,请参阅 references/production-evaluation.md。

分类任务评估

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

指标:

  • 准确率: 正确预测数 / 预测总数
  • 精确率: 真阳性 /(真阳性 + 假阳性)
  • 召回率: 真阳性 /(真阳性 + 假阴性)
  • F1 分数: 精确率与召回率的调和平均值
  • 混淆矩阵: 详细列出预测错误

快速入门(Python):

from sklearn.metrics import accuracy_score, precision_recall_fscore_support

y_true = ["positive", "negative", "neutral", "positive", "negative"]
y_pred = ["positive", "negative", "neutral", "neutral", "negative"]

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

print(f"Accuracy: {accuracy:.2f}")
print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1 Score: {f1:.2f}")

完整的分类评估示例请参阅 examples/python/classification_metrics.py。

生成任务评估

适用于开放式文本生成(摘要、创意写作、回复)。

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

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

局限性: 对于创意性或主观性生成,自动化指标与人工判断的相关性较弱。

推荐方法:

  1. 自动化指标: 快速反馈客观方面(长度、格式)
  2. 大模型作为评判者: 细致评估质量(相关性、连贯性、实用性)
  3. 人工评估: 对主观标准(偏好、创造力)进行最终验证

有关详细的生成评估模式,请参阅 references/evaluation-types.md。

快速参考表

评估框架选择
如果任务是……使用此框架主要指标
RAG 系统RAGAS忠实度 > 0.8
分类scikit-learn 指标准确率、F1
生成质量LLM-as-judge质量评分标准(1-5)
代码生成HumanEvalPass@1、测试通过率
模型比较基准测试MMLU、HellaSwag 得分
安全验证幻觉检测忠实度、事实核查
生产监控在线评估用户反馈、业务 KPI
Python 库推荐
库使用场景安装
RAGASRAG 评估pip install ragas
DeepEval通用大模型评估、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-as-judge 最佳实践和提示词: 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 - 检测输出中的幻觉

用法示例:

# Run RAGAS evaluation on custom dataset
python scripts/run_ragas_eval.py --dataset data/qa_dataset.json --output results.json

# Compare GPT-4 vs Claude on benchmark
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: 将测试金字塔应用于大模型评估(单元 → 集成 → E2E)
  • observability: 监控生产环境并针对大模型质量设置告警
  • building-ci-pipelines: 将大模型评估集成到 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-as-judge 或人工评估

2. 忽视 RAG 系统中的忠实度

  • 幻觉是 RAG 最常见的故障模式
  • 解决方案:优先关注忠实度指标(目标 > 0.8)

3. 缺少生产环境监控

  • 模型可能随时间推移而退化,提示词也可能因更新而失效
  • 解决方案:设置持续评估(LangSmith、自定义监控)

4. LLM-as-Judge 评估存在偏差

  • 评估器大模型存在偏差(位置偏差、冗长偏差)
  • 解决方案:对多次评估取平均值,并使用多样化的评估提示词

5. 基准测试覆盖不足

  • 单一基准测试无法全面反映模型能力
  • 解决方案:使用 3-5 个涵盖不同领域的基准测试

6. 缺少安全性评估

  • 生产环境中的大模型可能生成有害内容
  • 解决方案:在评估流水线中加入毒性、偏见和幻觉检查

评论

支持 Markdown