LLMEval 是一个面向大语言模型(LLM)的标准化自动化评测系统,提供客观测度指标计算、多任务连续批处理调度、自动化沙箱判定及报告持久化能力。系统支持 Web 控制台、CLI 命令行工具及 Python SDK 三种使用方式。
- 标准协议兼容:采用统一的 Custom OpenAI 规范接口(Model Name、Base URL、API Key),原生适配开源推理后端(vLLM、SGLang、Ollama 等)及主流商业模型 API。
- 多模型批处理流水线 (Batch Pipeline):
- 同时并发 (Parallel):多模型任务异步并行执行,提高吞吐率。
- 顺序队列 (Sequential):逐任务排队执行,降低计算资源与带宽占用。
- 故障隔离:单模型请求异常自动记录并跳过,保障流水线连续运行。
- 全领域基准覆盖:内置 11 项主流权威学术与工程测试集,涵盖学科综合、数学推理、代码生成及指令遵循。
- 安全代码沙箱:针对代码生成类评测(HumanEval, MBPP),采用独立受控子进程与超时熔断机制。
- 即时持久化与分析:评测结果逐模型落库 SQLite,支持历史回溯、ECharts 能力雷达图及 Bad Case 深度审查。
llm-test/
├── app.py # Web 服务启动入口 (端口: 7860)
├── web/ # Web 控制台模块 (FastAPI + Vue 3 单页应用)
│ ├── server.py # REST API 与 SSE 实时事件服务
│ └── templates/index.html # 企业级管理界面
├── cli.py # CLI 命令行评测工具
├── eval_engine/ # 评测引擎核心包
│ ├── models/ # 模型通信与鉴权适配
│ ├── datasets/ # 数据集加载器
│ ├── metrics/ # 指标判分与代码执行沙箱
│ ├── core/ # 异步调度器与流式推流
│ └── storage/ # SQLite 持久化 (eval_history.db)
├── testsets/ # 本地评测基准数据源
├── tests/ # 自动化测试套件 (27 项)
└── requirements.txt # Python 依赖清单
pip install -r requirements.txtpython3 app.py访问 http://localhost:7860 即可使用以下模块:
- 任务工作台:配置待测模型队列,选择数据集及执行模式(并发/顺序),查看 SSE 实时日志。
- 排行榜与能力雷达:多模型综合计分板与五维能力雷达分析。
- Bad Case 审查器:按测试集和判定状态过滤异常与错误样本,侧滑抽屉对比 Prompt 与完整输出。
- 历史记录与导出:查看持久化批次,支持 Markdown、JSON、CSV 格式导出。
# 快速冒烟测试 (每数据集抽样 3 题)
python3 cli.py --model mock-eval-model --testset mmlu,gsm8k,humaneval --sample-limit 3
# 评测 OpenAI 兼容端点模型
python3 cli.py --model qwen3.6-flash \
--base-url https://api.openai.com/v1 \
--api-key sk-xxxxxx \
--concurrency 8 \
--testset ALL
# 开启深度思考模式 (Thinking Mode)
python3 cli.py --model qwen3.6-flash \
--base-url https://api.openai.com/v1 \
--enable-thinking \
--testset gsm8k,math_500import eval_engine as ee
report = ee.run_evaluation(
model_name="qwen3.6-flash",
base_url="https://api.openai.com/v1",
api_key="sk-xxxxxx",
enable_thinking=True,
concurrency=8,
testsets=["gsm8k", "humaneval", "mmlu"],
sample_limit=10
)
# 打印 Markdown 格式总结
print(ee.ReportExporter.to_markdown(report))| 数据集 ID | 基准名称 | 任务类型 | 评测方式 | 样本量 |
|---|---|---|---|---|
mmlu |
MMLU | 学科选择题 | 正则/CoT 选项匹配 | 14,042 |
mmlu_pro |
MMLU-Pro | 复杂选择题 | 10选1 选项提取 | 12,032 |
ceval |
C-Eval | 中文学科综合 | 单项选择匹配 | 12,344 |
gpqa |
GPQA | 专家科学问答 | 高难选择匹配 | 448 |
supergpqa |
SuperGPQA | 专业学科问答 | 多选题匹配 | 26,529 |
gsm8k |
GSM8K | 数学应用题 | 数值/公式等价比对 | 1,319 |
math_500 |
MATH-500 | 奥数竞赛题 | \boxed{} 解析与等价判定 |
500 |
aime |
AIME | 数学邀请赛真题 | 整数答案精准提取 | 90 |
humaneval |
HumanEval | 代码生成 | 安全沙箱单测执行 (Pass@1) | 164 |
mbpp |
MBPP | 基础代码题 | Python 断言沙箱执行 | 427 |
ifeval |
IFEval | 指令遵循 | 25 项规则程序化验证 | 541 |
- 放置数据:在
./testsets/<dataset_name>/下放入test.jsonl或对应数据文件。 - 编写加载器:在
eval_engine/datasets/下创建适配器类,继承BaseDataset并实现load()与evaluate()方法。 - 注册类:使用
@DatasetRegistry.register("<dataset_name>")装饰器完成注册,Web、CLI 及 SDK 将自动识别该数据集。
项目提供完整的自动化测试套件:
python3 -m unittest discover -s tests -p "test_*.py"测试覆盖指标提取算法、沙箱隔离执行、Web API 路由及多模型并发/顺序流水线调度,27/27 项测试通过 (100% Passed)。
本项目遵循 MIT License 开源许可。