Harness(AI 评测框架)
→ 返回工程实践
用于系统化评估 LLM 能力的测试框架。通过标准化数据集和指标,量化模型在推理、代码、知识、安全等维度的表现。
主流评测框架
| 框架 | 维护方 | 特点 |
|---|---|---|
| LM Evaluation Harness | EleutherAI | 开源标准,支持 60+ 基准 |
| OpenCompass | 上海AI实验室 | 中文友好,支持国产模型 |
| HELM | Stanford | 多维度综合评测 |
| BIG-bench | 困难任务集合 | |
| MT-Bench | LMSYS | 多轮对话质量评测 |
LM Evaluation Harness 使用
pip install lm-eval
# 评测 GPT-2 在 HellaSwag 上的表现
lm_eval --model hf \
--model_args pretrained=gpt2 \
--tasks hellaswag \
--device cuda:0 \
--batch_size 8
# 评测 OpenAI 模型
lm_eval --model openai-chat-completions \
--model_args model=gpt-4o \
--tasks mmlu,gsm8k \
--output_path ./results常用评测基准
| 基准 | 类型 | 说明 |
|---|---|---|
| MMLU | 知识 | 57个学科选择题,测通用知识 |
| GSM8K | 数学 | 小学数学应用题,测推理 |
| HumanEval | 代码 | Python 函数补全,测编码能力 |
| HellaSwag | 常识 | 句子补全,测常识推理 |
| TruthfulQA | 真实性 | 检测模型是否产生幻觉 |
| C-Eval | 中文 | 中文知识与推理综合评测 |
自定义评测任务
# 定义自定义任务
from lm_eval.api.task import Task
from lm_eval.api.instance import Instance
class MyTask(Task):
VERSION = 1
DATASET_PATH = "my_dataset"
def has_training_docs(self): return False
def has_validation_docs(self): return True
def validation_docs(self):
return self.dataset["validation"]
def doc_to_text(self, doc):
return f"问题:{doc['question']}\n答案:"
def doc_to_target(self, doc):
return doc['answer']
def process_results(self, doc, results):
pred = results[0].strip()
return {"exact_match": int(pred == doc['answer'])}
def aggregation(self):
return {"exact_match": mean}RAG 评测(RAGAS)
专门用于评测 RAG 流水线质量:
from ragas import evaluate
from ragas.metrics import (
faithfulness, # 回答是否忠实于检索内容
answer_relevancy, # 回答与问题的相关性
context_precision, # 检索内容的精确率
context_recall, # 检索内容的召回率
)
from datasets import Dataset
data = {
"question": ["Redis 是什么?"],
"answer": ["Redis 是基于内存的键值数据库"],
"contexts": [["Redis 是一个高性能的键值存储系统..."]],
"ground_truth": ["Redis 是内存数据库,支持多种数据结构"]
}
result = evaluate(Dataset.from_dict(data), metrics=[
faithfulness, answer_relevancy,
context_precision, context_recall
])
print(result)Agent 评测
评测 Agent 完成多步任务的能力:
| 框架 | 场景 |
|---|---|
| AgentBench | 多环境 Agent 综合评测 |
| WebArena | 浏览器操作任务 |
| SWE-bench | GitHub Issue 修复(代码 Agent) |
| τ-bench | 工具调用准确率 |