Skip to content

ydli-ai/LiveSecBench

Repository files navigation

LiveSecBench

A Dynamic and Culturally-Relevant AI Safety Benchmark for LLMs in Chinese Context

Python 3.10+ arXiv

English | 简体中文

LiveSecBench 是一个面向中文场景的大模型安全评测基准。框架结合动态题库、模型对战与客观评分流程,可在伦理、合法性、事实性、隐私、对抗鲁棒与推理安全等核心维度持续追踪模型表现。完整方法论请参见论文 LiveSecBench: A Dynamic and Culturally-Relevant AI Safety Benchmark for LLMs in Chinese Context

微信交流群

欢迎扫码加入 LiveSecBench 微信交流群,获取最新评测动态与技术讨论:

LiveSecBench 微信交流群

项目亮点

  • 真实语境:题库覆盖多种中文安全场景,区分显性与隐性风险表达。
  • 对战式评分:ELO 流程支持瑞士制 / 循环 / 随机配对,可选收敛检测提前停止。
  • 任务溯源:评测任务、模型输出与 PK 结果统一落盘到 SQLite/MySQL,便于复现与审计。
  • 自动报告:生成排行榜、统计摘要与 Markdown 报告。
  • 离线演示:Mock 脚本可在无 API Key 环境模拟完整流程,快速验证配置。
  • 🚀 新特性:并发分组执行 - 支持并行/串行混合策略,大幅提升评测效率
  • 🚀 新特性:实时数据保存 - 每完成一次请求立即写入数据库,支持断点续传
  • 🚀 新特性:图片输入支持 - 支持 URL 和 base64 格式图片输入,支持多图片
  • 🚀 新特性:MySQL 存储 - 可选 MySQL 存储,解决高并发写入性能问题
  • 🚀 新特性:文生图评测 - 支持 文生图 API
  • 🚀 新特性:流式接口适配 - 支持对 stream=true 响应自动聚合,兼容 SSE 分片返回
  • 🚀 新特性:上下文超限自动回退 - 判别模型遇到 400 上下文超限时可自动切换 fallback 裁判模型
  • 🚀 新特性:PK 执行优化 - 自动跳过相同回答对战,并优先使用题库 reference_answer 作为裁判参考答案

快速开始

环境要求

  • Python 3.10+
  • 8GB RAM / 10GB 磁盘空间
  • 建议使用 conda create -n livesecbench python=3.10 && conda activate livesecbench

安装

git clone https://github.com/ydli-ai/LiveSecBench.git
cd LiveSecBench
python -m pip install -e .

配置环境变量

export OPENAI_API_KEY="your_openai_key"
export DEEPSEEK_API_KEY="your_deepseek_key"

配置评测参数

编辑配置文件 livesecbench/configs/run_custom_safety_benchmark.yaml

  1. 配置待评测模型:在 models_to_test 中修改模型列表为实际模型,确保:

    • api_config.api_key 使用 env_var:YOUR_API_KEY 格式与环境变量匹配
    • api_config.base_urlmodel_id 设置为正确的 API 端点
    • api_config.end_point 指定具体请求路由(默认 /chat/completions
    • image_text_inputtrue 时表示该模型支持图文混合输入
  2. 配置判别模型:在 judge_model_api 中设置实际判别模型,确保:

    • api_key 使用 env_var:YOUR_JUDGE_API_KEY 格式与环境变量匹配
    • base_urlmodel 设置为正确的判别模型 API 信息

示例配置:

models_to_test:
  - model_name: "Your Model"
    image_text_input: false
    api_config:
      base_url: "https://api.example.com/v1"
      end_point: "/chat/completions"
      api_key: "env_var:OPENAI_API_KEY"  # 对应环境变量
      model_id: "gpt-4"
      
judge_model_api:
  base_url: "https://api.deepseek.com/v1"
  api_key: "env_var:DEEPSEEK_API_KEY"  # 对应环境变量
  model: "deepseek-chat"
  max_tokens: 163840
  provider_ignore: []  # 可选:屏蔽特定 provider 路由
  fallback:            # 可选:上下文超限时自动回退
    base_url: "https://openrouter.ai/api/v1"
    api_key: "env_var:OPENROUTER_API_KEY"
    model: "google/gemini-2.5-flash"
    max_tokens: 1048576
    provider_ignore: []

运行评测

python livesecbench/run_livesecbench.py --config livesecbench/configs/run_custom_safety_benchmark.yaml

运行测试

python -m pip install -e .[test]
pytest -v
pytest -k config_manager -v  # 仅验证配置解析等模块

Mock 端到端演示

python scripts/run_mock_e2e.py

脚本会加载 livesecbench/configs/mock_e2e.yaml,Mock 所有 HTTP 请求,并把演示数据写入 mock_results/mock_history/mock_records/ 以及 data/mock_e2e.db

配置概览

  • 主配置位于 livesecbench/configs/run_custom_safety_benchmark.yaml
  • models_to_test 中为每个模型配置 API 信息(base_urlapi_keymodel_id、可选 provider_ignore),均支持 env_var: 引用环境变量。
  • question_selection 可混合多个维度、版本或样本数量限制。
  • scoring_settings.model_based.elo 控制配对策略、收敛检测、输出目录等参数。
  • judge_model_api 指定裁判模型,默认 deepseek-chat
  • judge_model_api.max_tokens 默认 163840,可按模型上下文窗口调整;当主裁判模型返回 400 上下文超限时,可通过 judge_model_api.fallback 自动切换到大上下文模型。
  • models_to_test[].api_config.stream 可开启流式响应,框架会自动聚合分片并保持统一输出格式。
  • api_call_settings.concurrency_groups 支持并发分组配置,可按照并行/串行混合策略。
  • storage 支持 SQLite 或 MySQL 切换,推荐在高并发场景使用 MySQL。
  • api_call_settings 支持 RPM/TPM/并发限制配置,精细化控制 API 调用速率。
  • 文生图:在 models_to_test 中为文生图模型设置 task_type: text_to_imageapi_config.api_providersiliconflow / sd_webui / comfyui),在 question_selection 中增加 dimension: text_to_image 与题集 text_to_image;生成图落盘到 artifacts/{task_id}/{model_id}/{question_id}/,并通过 image_postprocess.captioner 转成文字描述供裁判评分。
  • 详尽说明与最佳实践请参见 docs/USER_GUIDE.md

结果产出

  • results/{日期}/
    • {月份}-models*.csv:各维度综合得分与排名
    • {月份}-stats*.csv:评测统计摘要
    • elo_results/{维度}/:维度级 ELO 历史与 PK 详情(含 Excel)
    • summary_report*.md:自动生成的评测报告
  • data/livesecbench.db
    • model_outputs:模型回答记录
    • pk_results:模型对战结果
    • evaluation_tasks:任务元信息

排行榜与文档

项目结构

LiveSecBench/
├── livesecbench/
│   ├── core/
│   │   ├── run_model_answer.py   # 拉取模型回复
│   │   ├── run_scoring.py        # ELO 评分编排
│   │   ├── rank.py               # 排名聚合
│   │   ├── report.py             # Markdown 报告生成
│   │   └── task_manager.py       # 任务生命周期
│   ├── infra/
│   │   ├── config/               # ConfigManager、schema 校验
│   │   ├── storage/              # SQLiteStorage、缓存接口
│   │   ├── scoring/              # 配对策略、收敛检测
│   │   ├── batch_processor.py    # 批量调度
│   │   ├── cache_manager.py      # 输出缓存
│   │   └── http_client.py        # 带重试/限流的 HTTP 客户端
│   ├── scorers/
│   │   └── model_based_scorer.py # 基于裁判模型的评分逻辑
│   ├── question_set/             # 题库 JSON/CSV
│   ├── configs/                  # 运行配置样例(含自定义基准)
│   ├── utils/                    # 日志、环境变量加载等
│   └── run_livesecbench.py       # CLI 入口
├── docs/                         # 用户指南、架构、API 文档
├── scripts/
│   └── run_mock_e2e.py           # Mock 端到端脚本
├── tests/                        # pytest 用例
├── data/                         # SQLite 数据库
└── results/                      # 评测输出(按日期归档)

引用

@article{livesecbench,
  title={LiveSecBench: A Dynamic and Culturally-Relevant AI Safety Benchmark for LLMs in Chinese Context},
  author={Yudong Li, Zhongliang Yang, Kejiang Chen, Wenxuan Wang, Tianxin Zhang, Sifang Wan, Kecheng Wang, Haitian Li, Xu Wang, Lefan Cheng, Youdan Yang, Baocheng Chen, Ziyu Liu, Yufei Sun, Liyan Wu, Wenya Wen, Xingchi Gu, Peiru Yang},
  year={2025},
}

About

LiveSecBench:动态中文大模型安全榜单

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages