OpenCompass 是一个开源开放的大模型评测平台,构建了包含学科、语言、知识、理解、推理五大维度的通用能力评测体系,支持了超过 50 个评测数据集和 30 万道评测题目,支持零样本、小样本及思维链评测。OpenCompass 支持大部分主流 HuggingFaces 上的大语言模型的评测,只需几行简单配置,便可轻松开展模型评测。
OpenCompass在过去的两个月里进行了大量功能升级,结合大模型的发展需求,新增多项特色能力评测。
- 支持评测工具调用能力,配合 Lagent/LangChain 等智能体框架可以快速开展工具调用能力的评测
- 新增长文本评测能力,支持 L-Eval, LongBench 等长文本评测集
- 开放多模态评测能力,支持 MMBench, SEED-Bench, MME, ScienceQA 等十余个多模态评测集
- 提升代码评测能力,支持 HumanEval-X,并提供统一的多语言代码能力测试环境
能力 |
任务介绍 |
评测方式 |
示例数据地址 |
---|---|---|---|
语言 |
评测模型在信息抽取、信息抽取、内容总结、对话、创作等多种任务上的能力 |
主观评测 |
https://github.com/open-compass/CompassBench/tree/main/v1_3_data/language |
推理 |
评测模型在逻辑推理、常识推理、表格推理等多种日常推理任务上的能力 |
主观评测 |
https://github.com/open-compass/CompassBench/tree/main/v1_3_data/reasoning |
知识 |
评测模型在理科、工科、人文社科等多个领域的知识水平 |
客观评测 |
https://github.com/open-compass/CompassBench/tree/main/v1_3_data/knowledge |
数学 |
评测模型在数值计算、高中及大学难度的数学问题上的能力 |
客观评测 |
https://github.com/open-compass/CompassBench/tree/main/v1_3_data/math |
代码 |
评测模型在代码生成、代码补全、代码注释、代码重构、代码改写、计算机知识综合问答上的能力 |
客观评测 + 主观评测 |
https://github.com/open-compass/CompassBench/tree/main/v1_3_data/code |
指令跟随 |
评测模型在基于各类语言、推理、知识等任务中,能否准确遵循复杂指令的能力 |
主观评测 |
https://github.com/open-compass/CompassBench/tree/main/v1_3_data/instruct |
智能体 |
评估模型在复杂工具调用的能力,以及数据科学、数学等情况下使用代码解释器的能力 |
客观评测 |
https://github.com/open-compass/T-Eval https://github.com/open-compass/CIBench |
-
Instruction(指令):是给模型看的“考题”。
-
Checklist(检查清单):是给评测者(人或自动程序) 看的“评分标准”。
下面我们分别详细说明。
1. Instruction(指令)
Instruction 是评测集里每个样本的核心部分,它模拟了一个真实的、用户向AI助手提出的请求或问题。它的形式就是一段自然语言的文本,和你平时使用 ChatGPT 等模型时输入的提示词(Prompt)完全一样。
例如:
-
“写一封邮件,向我的经理请三天年假,理由要得体。”
-
“用Python写一个函数,计算斐波那契数列的第n项。”
-
“总结下面这篇文章的中心思想:[此处是一段文章]”
使用方法:直接输入给被评测的模型。
-
选择评测样本:从评测集中选择一个或一批 Instruction。
-
调用模型:将这些 Instruction 作为输入(Prompt),发送给你想要评测的目标模型(例如,你的公司训练的模型 A,和开源模型 B)。
-
获取输出:收集模型针对每个 Instruction 产生的输出(Response)。
目的:
-
测试模型在零样本(Zero-shot) 学习下的能力。即模型不经过特定任务的训练,仅凭指令和理解能力就能做出正确回应的能力。
-
生成用于后续评估的“答案”。模型产生的这些输出,就是接下来需要用 Checklist 来评判的对象。
核心作用: 作为模型的输入,激发模型产生响应,从而检验其能力。
2. Checklist(检查清单)
Checklist 是与每个 Instruction 配套的一个结构化、标准化的评分标准列表。它通常不是一个简单的问题(如“这个回复好吗?”),而是一系列需要评测者逐一核对的细粒度、二分类(是/否)问题。
一个 Checklist 通常包含多个检查项(Check Items),每个检查项评估回复的某一个特定维度。
例如,针对指令“写一封邮件,向我的经理请三天年假,理由要得体。”,其 Checklist 可能包含:
-
格式:回复是否采用了正确的邮件格式(有称呼、正文、落款)?
-
完整性:邮件是否明确包含了请假的具体日期和天数?
-
得体性:请假的理由是否专业、得体,没有不合适的细节?
-
安全性:回复是否避免了泄露任何个人隐私信息(如病历号)?
使用方法:由评测者(人或自动化脚本)对照模型的输出进行核对。
-
获取输出:拿到模型对某个 Instruction 的回复。
-
逐项检查:拿着配套的 Checklist,逐条检查模型的回复。
-
打分:对每一个检查项(Check Item)进行判断:
-
1(是):模型的回复满足该项要求。
-
0(否):模型的回复不满足该项要求。
-
-
计算分数:通常,一个 Instruction 的最终得分是所有检查项的通过率。例如,一个包含4个检查项的 Checklist,模型满足了3个,那么得分就是 3/4 = 75%。
自动化评估:
对于某些客观的检查项(如“是否包含关键词XXX?”、“输出的代码是否能运行?”),可以编写脚本进行自动判断(Test-based Evaluation)。
对于主观的检查项(如“理由是否得体?”),则需要依靠人类进行评判(Human Evaluation),但 Checklist 将主观评价分解为了可衡量的客观问题,大大提高了评估的一致性和可重复性。
核心作用: 作为评估模型输出的标尺,确保评估过程的客观、一致和可量化。
https://github.com/open-compass/CompassBench/blob/main/v1_3_data/