Skip to content

Repository files navigation

LLMEval: 大语言模型自动化基准评测平台

Python 3.9+ FastAPI + Vue 3 License: MIT Build Status

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 依赖清单

快速上手

1. 环境安装

pip install -r requirements.txt

2. 启动 Web 控制台

python3 app.py

访问 http://localhost:7860 即可使用以下模块:

  • 任务工作台:配置待测模型队列,选择数据集及执行模式(并发/顺序),查看 SSE 实时日志。
  • 排行榜与能力雷达:多模型综合计分板与五维能力雷达分析。
  • Bad Case 审查器:按测试集和判定状态过滤异常与错误样本,侧滑抽屉对比 Prompt 与完整输出。
  • 历史记录与导出:查看持久化批次,支持 Markdown、JSON、CSV 格式导出。

3. CLI 命令行评测

# 快速冒烟测试 (每数据集抽样 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_500

4. Python SDK 调用

import 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

扩展指南

新增评测数据集

  1. 放置数据:在 ./testsets/<dataset_name>/ 下放入 test.jsonl 或对应数据文件。
  2. 编写加载器:在 eval_engine/datasets/ 下创建适配器类,继承 BaseDataset 并实现 load()evaluate() 方法。
  3. 注册类:使用 @DatasetRegistry.register("<dataset_name>") 装饰器完成注册,Web、CLI 及 SDK 将自动识别该数据集。

测试与验证

项目提供完整的自动化测试套件:

python3 -m unittest discover -s tests -p "test_*.py"

测试覆盖指标提取算法、沙箱隔离执行、Web API 路由及多模型并发/顺序流水线调度,27/27 项测试通过 (100% Passed)


许可证

本项目遵循 MIT License 开源许可。

About

🎯 现代化大语言模型标准自动化评测平台 (LLMEval) | 支持开源/商业模型 · 五维能力雷达图 · Bad Case 逐题审查 · SQLite 历史持久化 · Gradio Web & CLI

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages