大模型测评框架:promptfoo、Evals、LM-Evaluation-Harness、HELM、Guardrails

大模型基础之评测里概述性介绍评测相关的理论体系。本文专注于评测框架,包括开源和闭源两大类。

开源

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

官网HuggingFace Leaderboard

公开的线上平台,透过匿名、群众参与的成对比较来评估大型语言模型。使用者输入提示,让两个匿名模型生成回复,再投票选出表现较好的模型,投票后才会显示模型名称。使用者也能自行挑选模型进行测试。

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

榜单Leaderboard,包括

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

原理:https://lmarena.ai/how-it-works

Braintrust

官网,专注AI产品评测,支持A/B测试和持续监控,将LLM评测集成到SDLC(Prompt→Eval→Deploy→Monitor→Iterate)。

相关推荐
青木9601 个月前
智能体(Agent)开发与部署项目
langchain·benchmark·智能体·gaia
dawdo2224 个月前
自己动手从头开始编写LLM推理引擎(11)-xLLM的benchmark实现
llm·transformer·性能测试·qwen·benchmark·推理引擎
一个处女座的程序猿4 个月前
LLMs之Benchmark:《CL-bench: A Benchmark for Context Learn》翻译与解读
人工智能·benchmark·llms
PeterClerk4 个月前
计算机视觉常用指标(Metrics)速查与解释(持续更新)
人工智能·python·深度学习·计算机视觉·benchmark·评测
HyperAI超神经5 个月前
GPT-5全面领先,OpenAI发布FrontierScience,「推理+科研」双轨检验大模型能力
人工智能·gpt·ai·openai·benchmark·基准测试·gpt5.2
一个处女座的程序猿7 个月前
LLMs之RAG之Benchmark:面向真实场景的检索嵌入基准(RTEB)—理论、设计与实践指南
benchmark·rag·rteb
聚梦小课堂7 个月前
ComfyUI Blog: ImagenWorld 发布:面向图像生成与编辑的真实世界基准测试数据集
人工智能·深度学习·图像生成·benchmark·imagenworld
schedule___1 年前
visual studio 中导入 benchmark
c++·visual studio·benchmark
AlfredZhao1 年前
TPC-H 研究和优化尝试
benchmark·23ai·tpc-h·in-memory