详细介绍
C-Eval是什么
C-Eval是一套专为大语言模型设计的多层次、多学科中文评估基准,由上海交通大学、清华大学及爱丁堡大学的研究团队于2023年5月联合发布。该套件包含13,948道多项选择题,广泛覆盖52个不同学科领域,并划分为四个难度等级,旨在全面测评大模型的中文语境理解能力。借助零样本(zero-shot)和少样本(few-shot)测试机制,C-Eval能够有效评估模型在面对未知任务时的适应性与泛化性能。

C-Eval的主要功能
- 广泛的学科覆盖:C-Eval收录了来自STEM(科学、技术、工程、数学)、社会科学及人文学科等52个不同领域的题目,全方位检验语言模型的知识广度与深度。
- 细粒度的难度分级:设置从基础到高级的四个难度层级,能够细致地评估模型在不同复杂程度下的逻辑推理能力及知识泛化水平。
- 标准化量化评估:基于13,948道标准化多项选择题,提供量化的性能指标评分体系,支持对不同大语言模型进行客观、公平的横向对比。
如何使用C-Eval
- 获取数据集:
- 通过 Hugging Face 下载:
from datasets import load_dataset
dataset = load_dataset("ceval/ceval-exam", name="computer_network")- 或者直接下载 ZIP 压缩包并解压:
wget https://huggingface.co/datasets/ceval/ceval-exam/resolve/main/ceval-exam.zip
unzip ceval-exam.zip- 确定评估模式
- 零样本(Zero-shot):模型在无额外示例辅助的情况下,直接对问题进行作答。
- 少样本(Few-shot):模型在接收少量示例(例如5个演示样例)的提示后,再进行问题回答。
- 加载模型:确保目标模型已正确加载并处于推理就绪状态。若使用 Hugging Face 生态,可参考以下代码加载模型:
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "your-model-name"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)- 构建提示词(Prompt)
- 零样本提示模板:
以下是中国关于{科目}考试的单项选择题,请选出其中的正确答案。
{测试题目}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:- 少样本提示模板:
以下是中国关于{科目}考试的单项选择题,请选出其中的正确答案。
{题目1}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:A
[k-shot 示例]
{测试题目}
A. {选项A}
B. {选项B}
C. {选项C}
D. {选项D}
答案:- 生成响应:调用模型生成回答内容。随后需从生成文本中提取答案选项(A、B、C、D),或通过计算各选项的概率分布来选择概率最高的答案。
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
answer = extract_answer(response) # 自定义函数,提取答案选项- 执行评估
- 针对验证集(
val),可直接本地计算准确率。 - 针对测试集(
test),需将预测结果提交至 C-Eval 官方平台以获取最终评分。
from sklearn.metrics import accuracy_score
# 假设 `predictions` 是模型的预测结果,`labels` 是真实答案
accuracy = accuracy_score(labels, predictions)print(f"Validation Accuracy: {accuracy:.2f}")- 提交评测结果:整理所有测试题目的预测答案,生成符合要求的 JSON 文件:
{"chinese_language_and_literature": {"0": "A","1": "B",
...
},
...
}- 登录 C-Eval 官方网站上传结果文件,以获取权威的最终评分。

C-Eval的应用场景
- 大模型性能基准测试:全面量化语言模型的知识储备与逻辑推理能力,协助开发者针对性地优化模型表现。
- 学术研究与横向对比:为科研人员提供统一标准的测试环境,便于深入分析并比较不同语言模型在各垂直学科的表现,推动AI学术研究进展。
- 智慧教育工具开发:赋能智能辅导系统与自动化评估工具的开发,利用模型生成习题及自动批改功能,提升教育行业的智能化服务水平。
- 垂直行业应用优化:在金融、医疗、客户服务等领域,精准评估模型的专业领域知识掌握情况,优化行业专用解决方案的效果。
- 开源社区与技术竞赛:作为开放的评测平台,促进开发者之间的技术交流与合作,为各类模型竞赛及技术比拼提供公正、透明的基准测试工具。
查看更多
最新文章
Go Benchmark报告allocs/op并定位临时对象来源的方法
用 go test -benchmem 和 testing.B.ReportAllocs 读懂 B/op
Redis Sentinel故障转移期间客户端重连的配置方法
Redis Sentinel故障转移时,客户端不能继续依赖旧主节点地址。本文以服务发现、连接池、超时、退
商汤Seko能做AI短剧工具吗?功能范围和适用场景
本文解答商汤Seko作为AI短剧工具的核心能力,拆解功能边界、适用场景与选型要点,为创作者和工作室提供实
Go MultiWriter第一个Writer失败后其他Writer未完成的处理边界
Go io.MultiWriter按顺序写入多个Writer,首个错误会截断后续目标。本文用故障示例拆解
MySQL 复合索引跳过最左列时的访问边界
围绕 (tenant_id, status, created_at) 示例,说明跳过复合索引最左列后普通
Go fuzz测试把崩溃输入写入回归语料的流程
Go fuzz 测试发现崩溃输入后,如何利用 testdata/fuzz 语料目录在普通 go test
