Skip to content

chrcang/LLM-Performance-Benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

大模型应用性能评测平台

LLM Application Performance Benchmark Platform

一个用于评测大模型应用性能的综合平台,支持AI应用管理、测试集管理、压测任务执行、评分评测和可视化报告。

功能特性

核心功能

  • 用户权限管理 - JWT认证、角色权限控制、审计日志
  • AI应用管理 - AI应用CRUD、API密钥加密存储、连通性测试、SSRF防护
  • 测试集管理 - 测试集CRUD、测试用例管理、版本发布、批量导入(CSV/JSONL)
  • 压测任务 - 任务创建、Celery异步执行、流式响应处理、实时进度监控
  • 准确率评测 - 关键词评分、语义评分、格式校验、负向关键词检测
  • 报告可视化 - 折线图、柱状图、雷达图、箱线图、排名表

技术栈

组件 技术
后端框架 FastAPI + SQLAlchemy 2.x + Pydantic v2
异步任务 Celery + Redis
数据库 PostgreSQL (通过 Alembic 管理迁移)
前端框架 Vue 3 + TypeScript
图表 ECharts
认证 JWT (python-jose)
容器化 Docker + Docker Compose

项目结构

LLM Performance Benchmark/
├── backend/
│   ├── app/
│   │   ├── api/            # API路由
│   │   │   └── v1/
│   │   ├── core/            # 核心配置、安全、Redis
│   │   ├── db/              # 数据库基类和会话管理
│   │   ├── models/          # SQLAlchemy模型
│   │   ├── schemas/         # Pydantic模型
│   │   ├── services/        # 业务逻辑
│   │   ├── tasks/           # Celery任务
│   │   ├── scripts/         # 数据库初始化脚本
│   │   └── tests/           # 单元测试(含 conftest.py 依赖覆盖)
│   ├── alembic/
│   │   ├── env.py           # Alembic 环境配置
│   │   └── versions/        # 迁移脚本
│   ├── alembic.ini
│   ├── Dockerfile
│   ├── requirements.txt
│   ├── .env
│   └── .env.example
├── frontend/
│   ├── src/
│   │   ├── api/             # API调用
│   │   ├── router/          # 路由配置
│   │   ├── stores/          # Pinia状态管理
│   │   ├── types/           # TypeScript类型
│   │   ├── views/           # 页面组件
│   │   └── __tests__/       # 组件和store测试
│   ├── Dockerfile
│   ├── nginx.conf
│   ├── package.json
│   └── vite.config.ts
├── docker-compose.yml
└── README.md

环境要求

  • Python 3.12+
  • Node.js 18+
  • PostgreSQL 14+
  • Redis 6+
  • Docker & Docker Compose(可选,用于容器化部署)

快速开始(Docker Compose)

# 1. 配置环境变量
cp backend/.env.example backend/.env

# 2. 启动所有服务
docker compose up -d

# 3. 初始化数据库
docker compose exec backend python -m app.scripts.init_db
docker compose exec backend python -m app.scripts.seed_data

# 4. 访问
# 前端: http://localhost
# API文档: http://localhost:3100/docs

安装步骤(本地开发)

1. 后端安装

cd backend
python -m venv venv
source venv/Scripts/activate   # Windows
# source venv/bin/activate     # Linux/Mac
pip install -r requirements.txt

2. 前端安装

cd frontend
npm install

3. 环境配置

cp backend/.env.example backend/.env
# 编辑 backend/.env 填入实际配置

4. 数据库初始化

确保 PostgreSQL 和 Redis 服务正在运行,然后执行:

cd backend
python -m app.scripts.init_db      # 创建表结构
alembic stamp head                 # 标记基线迁移(已执行 init_db 时使用)
python -m app.scripts.seed_data    # 初始化种子数据

默认管理员账号:

  • 用户名: admin
  • 密码: admin123

配置

后端环境变量 (backend/.env)

# 数据库
DATABASE_URL=postgresql+psycopg2://postgres:123456@localhost:5432/llm_benchmark

# Redis
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/1

# JWT认证
SECRET_KEY=your-super-secret-key-change-in-production
JWT_ACCESS_TOKEN_EXPIRE_SECONDS=7200
JWT_REFRESH_TOKEN_EXPIRE_SECONDS=604800

# 加密 (任意长度均可,内部通过 SHA-256 派生)
ENCRYPTION_KEY=your-encryption-key-change-in-production

# CORS (逗号分隔的允许来源)
ALLOWED_ORIGINS=http://localhost:3101,http://127.0.0.1:3101

# 应用配置
APP_ENV=development
APP_NAME=LLM Benchmark Platform
DEBUG=true

# AI API配置
AI_API_KEY=your-api-key
AI_BASE_URL=https://api.openai.com/v1

运行服务

启动后端API

cd backend
uvicorn app.main:app --host 0.0.0.0 --port 3100 --reload

启动Celery Worker

cd backend
celery -A app.tasks.celery_app worker --loglevel=info -Q benchmark,default

启动前端

cd frontend
npm run dev -- --port 3101

前端地址: http://localhost:3101

使用指南

1. 登录系统

访问 http://localhost:3101/login,使用管理员账号登录:

  • 用户名: admin
  • 密码: admin123

2. AI应用管理

  1. 进入"AI应用"页面
  2. 点击"创建应用"
  3. 填写应用名称、API地址、API密钥
  4. 点击"测试连接"验证连通性
  5. 保存应用

3. 测试集管理

  1. 进入"测试集"页面
  2. 创建测试集,填写基本信息
  3. 添加测试用例(prompt、expected_answer、keywords等)
  4. 配置评分规则
  5. 发布版本

4. 创建压测任务

  1. 进入"压测任务"页面
  2. 点击"创建任务"
  3. 选择目标AI应用和测试集版本
  4. 配置压测参数(并发数、请求数、模式等)
  5. 提交任务

5. 执行压测

  1. 任务创建后状态为"待启动"
  2. 点击"启动"按钮开始执行
  3. 实时查看进度、成功率等指标
  4. 可随时取消执行中的任务

6. 查看评分结果

  1. 压测完成后自动触发评分
  2. 进入"评分结果"页面
  3. 查看各评分维度的结果
  4. 如有需要可进行人工复核

7. 生成报告

  1. 进入"报告"页面
  2. 点击"创建报告"
  3. 选择报告类型(单个/对比/趋势)
  4. 系统自动生成图表数据并支持导出(HTML/PDF/XLSX/JSON)

数据库迁移

项目使用 Alembic 管理数据库 schema 版本:

cd backend

# 生成迁移(模型变更后)
alembic revision --autogenerate -m "描述"

# 应用迁移
alembic upgrade head

# 查看当前版本
alembic current

API文档

启动后端服务后访问:

主要API端点

模块 端点 说明
认证 POST /api/v1/auth/login 用户登录
认证 POST /api/v1/auth/refresh 刷新Token
AI应用 GET/POST /api/v1/ai-applications AI应用列表/创建
AI应用 GET/PUT/DELETE /api/v1/ai-applications/{id} AI应用详情/更新/删除
测试集 GET/POST /api/v1/datasets 测试集列表/创建
测试集 POST /api/v1/datasets/{id}/versions 发布版本
压测任务 GET/POST /api/v1/benchmark-runs 任务列表/创建
压测任务 POST /api/v1/benchmark-runs/{id}/start 启动任务
压测任务 POST /api/v1/benchmark-runs/{id}/cancel 取消任务
评分 GET /api/v1/evaluation/benchmark-runs/{id}/summary 评分汇总
报告 GET/POST /api/v1/reports 报告列表/创建
报告 GET /api/v1/reports/{id} 报告详情

测试

运行测试

# 后端测试
cd backend
python -m pytest app/tests/ -v

# 前端测试
cd frontend
npm run test

代码风格检查

# 后端 (ruff)
cd backend
ruff check app

# 前端 (eslint)
cd frontend
npm run lint

类型检查

# 后端 (mypy)
cd backend
python -m mypy app

# 前端 (vue-tsc)
cd frontend
npm run typecheck

压测模式

  • fixed_requests — 固定请求数量
  • fixed_duration — 固定持续时间
  • step_load — 阶梯式增加并发
  • comparison — 多应用对比压测

评分规则

  • 关键词评分 (keyword) — 根据用例配置的关键词计算命中数量和覆盖率
  • 语义评分 (semantic) — 使用 LLM 评判答案与期望答案的语义相似度
  • 格式评分 (format) — 验证回答格式是否符合要求
  • 负向关键词 (negative) — 检测回答中是否包含禁止出现的词汇

常见问题

Celery Worker 不执行任务

  1. 检查 Redis 服务是否正常运行
  2. 确认 Worker 已启动并监听 benchmark 队列
  3. 查看 Worker 日志排查问题

压测任务一直处于排队状态

  1. 检查 Celery Worker 是否正常运行
  2. 确认任务已正确路由到 benchmark 队列

前端无法连接后端

  1. 检查 CORS 配置(ALLOWED_ORIGINS 环境变量)
  2. 确认后端服务运行在 3100 端口
  3. 检查浏览器控制台错误信息

开发说明

添加新的API端点

  1. app/schemas/ 添加 Pydantic 模型
  2. app/services/ 添加业务逻辑
  3. app/api/v1/ 添加路由
  4. 编写单元测试

添加新的数据库模型

  1. app/models/ 定义模型
  2. app/models/__init__.py 中导出
  3. 运行 alembic revision --autogenerate -m "add_xxx_table"
  4. 运行 alembic upgrade head

添加新的 Celery 任务

  1. app/tasks/ 定义任务
  2. app/tasks/celery_app.pyinclude 列表中注册
  3. 在需要的地方调用任务

License

MIT License

About

大模型应用性能评测平台 - LLM Application Performance Benchmark Platform

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors