AI系统评测与基准方法
面试定位:当面试官问“你怎么评测一个 LLM/RAG/Agent 系统、怎么做发布门禁”,本篇给你:学术/工业 benchmark 地图 → RAG/Agent 评测框架(RAGAS/DeepEval/promptfoo)→ LLM-as-judge 及其偏差 → 安全评测指标 → 多模态评测 → CI eval 门禁流水线。
目录
为什么必须做评测
AI 系统迭代频繁,单靠人工体验很难发现性能退化。评测的价值在于把“感觉变好了”转化为“指标确实变好了”,并为发布提供客观门槛。评测体系分三层:
- 公开 benchmark:判断基础模型选型与能力上限。
- 业务 golden set:判断在你的真实任务上好不好用(最重要)。
- 安全/合规评测:判断会不会越狱、越权、泄露。
公开 Benchmark 地图(2026)
通用能力与推理
| Benchmark | 评什么 | 特点 |
|---|---|---|
| MMLU-Pro | 多学科知识+推理(MMLU 升级版) | 10 选项、更难、更抗污染,区分度高 |
| GPQA(Diamond) | 研究生级物理/化学/生物难题 | “Google-proof”,专家也难,测深度推理 |
| HumanEval | Python 代码生成(函数级) | 经典代码基准,pass@k 指标 |
| SWE-bench Verified | 真实 GitHub issue 修复(仓库级) | 人工验证子集,测端到端软件工程能力,是 2025/2026 代码 Agent 核心标尺 |
Agent 与浏览
| Benchmark | 评什么 |
|---|---|
| AgentBench | 多环境(操作系统、数据库、网页、游戏)下的 Agent 综合能力 |
| BrowseComp(OpenAI) | Agent 在真实网络上检索难找信息的能力,测浏览+多跳推理 |
多模态
| Benchmark | 评什么 |
|---|---|
| MMMU | 大学级多模态理解推理(图文混合、跨学科) |
| Video-MME | 视频理解综合评测(短/中/长视频,含字幕与音频) |
面试一句话:选型看 MMLU-Pro/GPQA(推理)、HumanEval/SWE-bench Verified(代码)、AgentBench/BrowseComp(Agent)、MMMU/Video-MME(多模态),但公开榜≠业务表现,最终要看自有 golden set。
注意 benchmark 污染(contamination):很多基准已进入训练数据,分数虚高。优先用“抗污染/私有/持续更新”的基准,并自建业务集。
评测对象与范围
- 模型输出质量(正确性、完整性、可执行性)。
- 工具调用质量(参数正确率、成功率、重试率)。
- 检索质量(召回、相关性、引用有效性)。
- 运行指标(延迟、成本、稳定性)。
- 安全指标(越权率、违规率、敏感信息泄露率)。
评测框架与方法
RAG 评测:RAGAS
RAGAS 专注 RAG 系统,核心指标:
- Faithfulness(忠实度):答案是否完全由检索上下文支撑(防幻觉)。
- Answer Relevancy(答案相关性):答案是否切题。
- Context Precision / Recall(上下文精确率/召回率):检索到的内容是否相关、是否覆盖了所需证据。
- 大多无需人工标注(reference-free),用 LLM 辅助打分,适合大规模回归。
通用/Agent 评测:DeepEval
DeepEval(“LLM 的 pytest”)提供 G-Eval(自定义 LLM-as-judge 指标)、幻觉、毒性、偏见、工具调用正确性、任务完成度等开箱指标,可写成单元测试形式,天然接 CI。
Prompt/对比评测:promptfoo
promptfoo 擅长矩阵式对比(多 prompt × 多模型 × 多用例),断言式评测(包含/正则/相似度/LLM-judge),内置红队/越狱测试,CLI 友好、易接 GitHub Actions。
LLM-as-judge 及其偏差
用强模型给输出打分/排序,省去大量人工,但要警惕偏差:
| 偏差 | 说明 | 缓解 |
|---|---|---|
| 位置偏差 | 偏好排在前面的答案 | 交换顺序双向评测取平均 |
| 冗长偏差 | 偏好更长的答案 | 评分标准里约束“简洁不加分” |
| 自我偏好 | 偏好与自己风格相似/自己生成的答案 | 用不同家族模型做 judge |
| 格式/礼貌偏差 | 偏好排版漂亮、语气友好的答案 | 明确 rubric,聚焦事实正确性 |
- 用明确 rubric + 少样本示例约束打分;关键场景用人工抽检校准 judge 与人的一致性(如 Cohen's Kappa)。
Golden Set 版本管理
- 每个样本至少含:输入、期望输出/评分规则、风险等级、来源、版本号。
- golden set 用 Git/数据集平台版本化,评测标准与代码同源、可 diff、可回溯,避免“标准随意漂移”。
安全评测
把安全做成可量化的回归指标,纳入门禁:
| 指标 | 含义 | 工具 |
|---|---|---|
| Jailbreak 成功率 | 越狱用例中成功绕过护栏的比例(越低越好) | PyRIT、Garak、promptfoo red-team |
| Tool Misuse Rate(工具误用率) | Agent 错误/越权调用工具的比例 | DeepEval 工具调用指标 + 自建用例 |
| PII Leak Rate(PII 泄露率) | 输出中泄露敏感信息的比例 | Presidio + 自建探针 |
| Prompt Injection 防御率 | 注入用例被成功拦截的比例 | promptfoo / Garak |
| 拒答合规率 | 应拒答场景正确拒答的比例 | 自建安全集 |
- 红队工具:PyRIT(微软) 用于自动化生成对抗 prompt、编排多轮攻击;Garak(NVIDIA) 是 LLM 漏洞扫描器,内置大量越狱/注入/泄露探针。
多模态评测
- 语音 ASR:WER(词错误率)/ CER(字错误率),中文常用 CER;区分干净/噪声/口音场景。
- TTS:MOS(主观听感)、可懂度、实时率(RTF)。
- 视觉/视频:用 MMMU、Video-MME 等基准 + 业务集;OCR 看字段准确率。
- 端到端语音 Agent:首响应延迟(TTFT)、打断响应、任务完成率。
核心指标体系
- 任务成功率:是否完成业务目标(最顶层指标)。
- 事实性指标:faithfulness / groundedness,关键结论是否可被证据支持。
- 工具调用准确率:工具选择和参数是否正确。
- 端到端延迟:从请求到可用结果的时间(含 TTFT)。
- 单位任务成本:每次任务的平均 Token/算力成本。
- 安全指标:jailbreak 成功率、tool misuse、PII leak(红线)。
评测集构建方法
- 从真实业务日志中抽样,覆盖高频、难例、失败案例。
- 每个样本至少包含:输入、期望输出、评分规则、风险等级。
- 样本版本化管理,避免评测标准随意漂移。
- 评测集必须包含对抗样本(注入、越狱、越权),检测安全风险。
回归评测与发布门禁
每次模型、Prompt、工具链更新都必须触发回归评测,未达红线自动阻断发布。
CI eval 门禁(GitHub Actions + promptfoo)
name: llm-eval-gate
on:
pull_request:
paths: ["prompts/**", "src/agent/**", "evals/**"]
jobs:
eval:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "20"
# promptfoo: 跑质量 + 安全(红队)用例,未达阈值则失败
- name: Run promptfoo eval
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: npx promptfoo@latest eval -c evals/promptfooconfig.yaml --share=false
- name: Assert thresholds
run: npx promptfoo@latest eval -c evals/promptfooconfig.yaml --fail-on-error
promptfooconfig.yaml 中可定义 assert 阈值(如 pass-rate >= 0.95、越狱用例必须全部拦截)。
DeepEval 在 pytest 中的门禁示例
# evals/test_rag.py -> CI 里 `deepeval test run evals/test_rag.py`
from deepeval import assert_test
from deepeval.metrics import FaithfulnessMetric, AnswerRelevancyMetric
from deepeval.test_case import LLMTestCase
def test_rag_answer():
case = LLMTestCase(
input="退款政策是几天?",
actual_output=run_rag("退款政策是几天?"),
retrieval_context=retrieve("退款政策"),
)
# 红线:忠实度与相关性均需达标,否则 CI 失败、阻断发布
assert_test(case, [
FaithfulnessMetric(threshold=0.9),
AnswerRelevancyMetric(threshold=0.8),
])
红线指标建议
- 任务成功率不低于上一版本。
- 高风险场景错误率不得上升;jailbreak 成功率 / PII leak rate 不得上升(硬门禁)。
- 单任务成本涨幅不超过设定阈值(如 +15%)。
- 未达标版本自动阻断发布,并输出失败原因报告。
常见误区
- 只看通用 benchmark:忽视业务真实任务,且公开榜存在数据污染。
- 评测样本过少:结果波动大,无法指导发布。
- 仅测质量不测成本/延迟/安全:上线后费用或安全失控。
- 盲信 LLM-as-judge:忽视位置/冗长/自我偏好偏差,未做人工校准。
- 不做失败复盘:无法形成持续改进闭环。
相关阅读
- Eval Harness 与发布门禁:Agent Harness 如何挂 CI 门禁(与本文指标衔接)。
- 05.3 Harness 最小项目(promptfoo)
- AI安全风险与防护策略:安全指标对应的攻击面与防护。
- AI合规与组织治理实践:eval 门禁如何嵌入发布流程。
- AI安全与治理(索引)