跳到主要内容

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”,专家也难,测深度推理
HumanEvalPython 代码生成(函数级)经典代码基准,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 漏洞扫描器,内置大量越狱/注入/泄露探针。

多模态评测

  • 语音 ASRWER(词错误率)/ CER(字错误率),中文常用 CER;区分干净/噪声/口音场景。
  • TTS:MOS(主观听感)、可懂度、实时率(RTF)。
  • 视觉/视频:用 MMMU、Video-MME 等基准 + 业务集;OCR 看字段准确率。
  • 端到端语音 Agent:首响应延迟(TTFT)、打断响应、任务完成率。

核心指标体系

  1. 任务成功率:是否完成业务目标(最顶层指标)。
  2. 事实性指标:faithfulness / groundedness,关键结论是否可被证据支持。
  3. 工具调用准确率:工具选择和参数是否正确。
  4. 端到端延迟:从请求到可用结果的时间(含 TTFT)。
  5. 单位任务成本:每次任务的平均 Token/算力成本。
  6. 安全指标: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:忽视位置/冗长/自我偏好偏差,未做人工校准。
  • 不做失败复盘:无法形成持续改进闭环。

相关阅读