在大模型基础之评测里概述性介绍评测相关的理论体系。本文专注于评测框架,包括开源和闭源两大类。
开源
promptfoo
官网,面向工程师的开源(GitHub,21.7K Star,1.9K Fork)LLM评测工具,CI/CD集成友好,支持A/B测试不同Prompt方案。
yaml
prompts:
- "回答以下问题:{{question}}"
- "你是专家助手,请回答:{{question}}"
providers:
- openai:gpt-4
- anthropic:claude-3-opus
tests:
- vars:
question: "量子纠缠是什么?"
assert:
- type: llm-rubric
value: "答案应准确解释量子纠缠的物理原理"
- type: not-contains
value: "对不起,我不知道"
Evals
OpenAI官方开源(GitHub,18.6K Star,3k Fork)评测框架,支持数千个任务的Registry统一管理,内置GridSearch。
通过yaml语法定义任务:
yaml
my-eval:
id: my-eval.dev.v0
description: "自定义评测任务"
metrics: [accuracy]
my-eval.dev.v0:
class: evals.elsuite.basic.match:Match
args:
samples_jsonl: path/to/samples.jsonl
num_few_shot: 2
LM-Evaluation-Harness
EleutherAI开源(GitHub,12.7K Star,3.3K Fork),最广泛使用的LLM评测框架,支持60+任务,一行命令评测任意HuggingFace模型。
bash
lm_eval --model hf \
--model_args pretrained=meta-llama/Llama-2-7b-hf \
--tasks hellaswag,mmlu,arc_easy,gsm8k \
--num_fewshot 5 \
--device cuda:0 \
--batch_size 8
# 使用 vLLM 后端提速(大模型推荐)
lm_eval --model vllm \
--model_args pretrained=meta-llama/Llama-2-70b-hf,dtype=float16 \
--tasks gsm8k \
--num_fewshot 8
支持通过YAML语法自定义任务:
yaml
task: my_task
dataset_path: my_org/my_dataset
doc_to_text: "问题:{{question}}\n答案:"
doc_to_target: "{{answer}}"
metric_list:
- metric: exact_match
- metric: f1
num_fewshot: 5
HELM
Holistic Evaluation of Language Models简称,项目首页,斯坦福CRFM开源(GitHub,2.8K Star,392 Fork),学术界最全面的LLM评测框架,核心理念是"全面性",不只看准确率,而是同时报告准确率、校准度、鲁棒性、公平性、偏见、毒性、效率七个维度。
子版本:
| 版本 | 特点 |
|---|---|
| HELMClassic | 原始版本,42个场景,7个指标 |
| HELMLite | 精简版,聚焦最重要的10个场景 |
| HELMInstruct | 专为指令微调模型,开放生成+LLM评判 |
| HELMSafety | 安全专项,毒性/偏见/隐私 |
使用示例:
bash
pip install crfm-helm
helm-run \
--run-entries mmlu:model=openai/gpt-4,data_augmentation=none \
--suite my-eval \
--max-eval-instances 100
helm-summarize --suite my-eval
OpenCompass
国内最活跃的LLM评测平台,对中文模型支持最好,集成几乎所有主流中文数据集。
另起一篇LLM测评框架之OpenCompass、VLMEvalKit。
EvalKit
官网,开源(GitHub,159 Star),官方文档,TS LLM评估库。
安全/对齐评测工具
Guardrails
Guardrails AI开源(GitHub,6.9K Star,614 Fork)LLM输出的实时验证与修正框架,Hub提供100+ Validator。官方文档。
示例:
python
from guardrails import Guard
from guardrails.hub import ToxicLanguage, DetectPII, ValidJson
guard = Guard().use_many(
ToxicLanguage(threshold=0.5, on_fail="exception"),
DetectPII(pii_entities=["EMAIL_ADDRESS", "PHONE_NUMBER"]),
ValidJson(on_fail="reask")
)
validated = guard(openai.chat.completions.create, prompt="...", model="gpt-4")
Validator分类:有害内容检测、PII识别过滤、格式验证(JSON/Python/SQL)、事实核查、偏见检测。
LangFuse
参考AIOps概述:Langfuse、Opik、KeepHQ。
全链路可观测性平台,支持Trace追踪、Score打分(人工/自动)、生产监控。集成Guardrails AI和LlamaGuard。
Inspect AI
官网,英国AI安全研究所开源(GitHub,2.1K Star,533 Fork)政府级AI安全评测框架,Solver/Scorer分离设计,内置Docker沙箱支持代码执行评测。
python
from inspect_ai import Task, task
from inspect_ai.dataset import csv_dataset
from inspect_ai.scorer import model_graded_fact
from inspect_ai.solver import chain_of_thought, generate
@task
def safety_eval():
return Task(
dataset=csv_dataset("safety_prompts.csv"),
solver=[chain_of_thought(), generate()],
scorer=model_graded_fact()
)
PyRIT
微软AI Red Team开源(GitHub,45 Star,7 Fork)红队自动化工具包,支持PAIR(迭代优化攻击)、Crescendo(逐步升级攻击),生成结构化安全报告。不过项目已归档。
多模态评测工具
LMMS-Eval
官网,开源(GitHub,4.2K Star,594 Fork)多模态评估工具,覆盖VQAv2、GQA、MMBench、Video-MME等50+任务。
bash
python -m accelerate.commands.launch \
--num_processes=8 \
-m lmms_eval \
--model llava \
--model_args pretrained=llava-hf/llava-1.5-7b-hf \
--tasks mmbench \
--batch_size 1 \
--output_path ./results
T2I-CompBench++
论文,开源(GitHub,340 Star,22 Fork)文生图的组合性评测,覆盖属性绑定、空间关系、非空间关系、组合场景四个维度。
评测流水线:文本描述→生成图像→VQA模型、检测器、CLIP、VQAScore多维评测→综合得分。
RAG
RAGAS
即RAG Assessment,开源(GitHub,14.1K Star,1.4K Fork)最广泛使用的RAG评测框架,支持自动化评测,官方文档。
四核心指标详解:
python
# Faithfulness(忠实度)
# 答案中被检索上下文支持的原子声明比例
def faithfulness(answer, contexts):
claims = decompose_into_claims(answer)
supported = sum(1 for c in claims if is_supported(c, contexts))
return supported / len(claims)
# Answer Relevance(答案相关性)
# 从答案反向生成问题,与原问题的语义相似度
def answer_relevance(question, answer):
generated_qs = generate_questions(answer, n=3)
return mean([cosine_sim(emb(q), emb(question)) for q in generated_qs])
# Context Precision(上下文精确率)
# CP = Σ (precision@k × rel(k)) / n
# 检索结果中相关内容的排序质量
# Context Recall(上下文召回率)
# 真实答案的声明有多少被上下文覆盖
def context_recall(ground_truth, contexts):
gt_claims = decompose_into_claims(ground_truth)
covered = sum(1 for c in gt_claims if is_supported(c, contexts))
return covered / len(gt_claims)
其他指标:Answer Correctness、Context Entity Recall、Noise Sensitivity、Response Conciseness。
快速上手:
python
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevance, context_precision, context_recall
from datasets import Dataset
result = evaluate(
Dataset.from_dict({
"question": [...],
"answer": [...],
"contexts": [...],
"ground_truth": [...]
}),
metrics=[faithfulness, answer_relevance, context_precision, context_recall]
)
# 返回:{faithfulness: 0.87, answer_relevance: 0.92, ...}
TruLens
官网,开源(GitHub,3.4K Star,284 Fork) RAG三元组评测+实验追踪,内置Dashboard,支持LangChain、LlamaIndex深度集成。
RAG Triad(三元组):
用户问题 ──► 检索器 ──► 上下文
│ │
│ ① Context │
│ Relevance ▼
│ LLM 生成器
│ ② Groundedness │
│ (扎根度) │
└──────────────────► 回答
③ Answer Relevance
对比:
| 维度 | TruLens | RAGAS |
|---|---|---|
| 评测粒度 | 完整RAG应用 | 输入输出数据集 |
| 实验追踪 | 内置(Dashboard) | 需外接工具 |
| 实时评测 | 支持 | 通常离线 |
| 框架集成 | LangChain/LlamaIndex深度 | 框架无关 |
使用示例:
python
from trulens.apps.langchain import TruChain
from trulens.providers.openai import OpenAI as TruOpenAI
from trulens import Feedback, TruSession
session = TruSession()
provider = TruOpenAI(model_engine="gpt-4")
f_groundedness = (
Feedback(provider.groundedness_measure_with_cot_reasons)
.on(TruChain.select_context().collect())
.on_output()
)
f_qa_relevance = Feedback(provider.relevance_with_cot_reasons).on_input_output()
tru_rag = TruChain(rag_chain, app_name="RAG-v1",
feedbacks=[f_groundedness, f_qa_relevance])
with tru_rag as recording:
answer = rag_chain.invoke("LLM评测框架有哪些?")
session.run_dashboard() # 启动可视化 Dashboard
ARES
Automated RAG Evaluation System缩写,项目主页,开源(GitHub,711 Star,69 Fork)RAG自动评估框架。用少量人工标注(30-100条)训练轻量级DeBERTa分类器,大规模低成本自动化评测,推理成本远低于GPT-4。
流程:合成数据生成(LLM)→少量人工标注→微调轻量分类器→大规模评测
DeepEval
官网,开源(GitHub,15.8K Star,1.5K Fork)Pytest风格的LLM单元测试框架,内置Red Teaming和合成数据生成,CI/CD友好。
示例:
python
from deepeval import assert_test
from deepeval.test_case import LLMTestCase
from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric, HallucinationMetric
def test_rag_answer():
test_case = LLMTestCase(
input="LLM评测的主要挑战是什么?",
actual_output=my_rag.answer("LLM评测的主要挑战是什么?"),
expected_output="数据污染、开放式输出评估、评判偏差等",
retrieval_context=["LLM评测面临数据污染等挑战..."]
)
assert_test(test_case, [
AnswerRelevancyMetric(threshold=0.7),
FaithfulnessMetric(threshold=0.8),
HallucinationMetric(threshold=0.1)
])
持续评测与实验管理
Weights & Biases Weave
官网,追踪+评测+监控三位一体,支持自动记录LangChain、LlamaIndex、OpenAI调用。
python
import weave
from weave import Evaluation
@weave.op()
def my_llm_app(question: str) -> str:
return llm.generate(question)
@weave.op()
def accuracy_scorer(model_output: str, ground_truth: str) -> dict:
return {"correct": model_output.strip() == ground_truth.strip()}
evaluation = Evaluation(dataset=weave.ref("eval_dataset:v1"), scorers=[accuracy_scorer])
asyncio.run(evaluation.evaluate(my_llm_app))
MLflow
安装:pip install mlflow
示例:
python
import mlflow
with mlflow.start_run():
results = mlflow.evaluate(
model=my_llm_model,
data=eval_dataset,
targets="ground_truth",
model_type="question-answering",
extra_metrics=[
mlflow.metrics.genai.faithfulness(model="openai:/gpt-4"),
mlflow.metrics.genai.answer_relevance(model="openai:/gpt-4")
]
)
内置指标:answer_similarity、faithfulness、answer_relevance、toxicity、flesch_kincaid_grade_level。
LangSmith
官网,核心功能:自动追踪所有LangChain调用、数据集版本管理、评测运行、Prompt Hub、生产监控。
python
from langsmith.evaluation import evaluate
results = evaluate(
my_rag_pipeline,
data="my_rag_eval",
evaluators=[is_accurate],
experiment_prefix="v2-with-rerank"
)
闭源
LMArena
公开的线上平台,透过匿名、群众参与的成对比较来评估大型语言模型。使用者输入提示,让两个匿名模型生成回复,再投票选出表现较好的模型,投票后才会显示模型名称。使用者也能自行挑选模型进行测试。

使用模式:匿名对抗、模型对比、聊天ChatBot

榜单Leaderboard,包括

注意:测试模型时使用的Prompt数据会被上传到云服务器。

原理:https://lmarena.ai/how-it-works
Braintrust
官网,专注AI产品评测,支持A/B测试和持续监控,将LLM评测集成到SDLC(Prompt→Eval→Deploy→Monitor→Iterate)。