> 当用户提到基准测试、压力测试、性能测试、benchmark、stress test、模型评测、TPS测试、LLM性能等关键词时,应触发本 Skill。
本 Skill 需要通过命令行执行,Agent 应按以下流程操作:
| 场景 | 关键词示例 | 推荐动作 |
|---|---|---|
| ------ | ----------- | --------- |
| 基准测试 | "测一下这个模型"、"跑个benchmark"、"测试API性能" | 执行 benchmark 命令 |
| 压力测试 | "压力测试"、"持续运行"、"稳定性测试"、"stress test" | 执行 stress 命令 |
| 批量对比 | "对比这几个模型"、"哪个模型更快" | 执行 batch 命令 |
| 性能分析 | "历史数据怎么样"、"趋势如何"、"分析性能" | 执行 optimize analyze |
| 参数优化 | "最佳参数"、"推荐配置"、"调参" | 执行 optimize suggest 或 auto-tune |
| 报告生成 | "生成报告"、"导出结果" | 执行 report 命令 |
pip install httpx reportlabpython llm_bench.py <子命令> [参数]report 命令生成 HTML/PDF 报告/v1/chat/completions)"ollama",API 地址为 http://localhost:11434/v1/chat/completions--mode quick)验证连通性auto-tune)会实际发送大量请求,提醒用户预估时间一站式 LLM API 测试工具,用户只需提供 API 地址、密钥、模型名即可完成:
status命令查看任务进度和预计完成时间方式一:WorkBuddy / ClawHub(推荐)
在 WorkBuddy 中搜索 llm-benchmark 直接安装,依赖会自动处理。
方式二:手动安装
pip install httpx reportlab
# 快速测试 (12条 × 3轮)
python llm_bench.py benchmark --api "http://localhost:11434/v1/chat/completions" --key "ollama" --model "qwen2.5:7b"
# 完整测试 (40条 × 3轮)
python llm_bench.py benchmark --api "URL" --key "KEY" --model "MODEL" --mode full --rounds 3
# 1小时压力测试
python llm_bench.py stress --api "URL" --key "KEY" --model "MODEL" --duration 60
# 3并发 + 256 tokens
python llm_bench.py stress --api "URL" --key "KEY" --model "MODEL" --duration 60 --concurrency 3 --max-tokens 256
# 查看所有任务
python llm_bench.py status
# 查看指定任务
python llm_bench.py status --task-id bench_qwen3_5-27b_153024
python llm_bench.py report --file result.json --format html
python llm_bench.py report --file result.json --format pdf
python llm_bench.py report --file result.json --format both
# 批量基准测试
python llm_bench.py batch --api "URL" --key "KEY" --models "qwen2.5:7b llama3.1:8b" --mode full --rounds 3
# 批量压力测试
python llm_bench.py batch-stress --api "URL" --key "KEY" --models "qwen2.5:7b llama3.1:8b" --duration 60
分析模型历史测试数据,生成性能画像和趋势判断。
# 分析指定模型
python llm_bench.py optimize analyze --model "qwen2.5:7b"
输出内容:
横向对比多个模型的历史性能表现。
python llm_bench.py optimize compare --models "qwen2.5:7b llama3.1:8b"
输出:多维对比表格(TPS/稳定性/TTFT/成功率/综合评分/趋势)+ HTML报告
基于历史数据推荐最优参数配置。
# 生产环境(低延迟优先)
python llm_bench.py optimize suggest --model "qwen2.5:7b" --scenario production
# 开发环境(平衡模式)
python llm_bench.py optimize suggest --model "qwen2.5:7b" --scenario development
# 压力测试(吞吐量优先)
python llm_bench.py optimize suggest --model "qwen2.5:7b" --scenario loadtest
| 场景 | 优先级 | 默认 max_tokens | 默认 temperature |
|---|---|---|---|
| ------ | -------- | ----------------- | ------------------- |
| production | 低延迟、稳定性 | 128 | 0.3 |
| development | 速度与质量平衡 | 256 | 0.7 |
| loadtest | 最大吞吐量 | 64 | 0.5 |
网格搜索自动寻找最优参数组合。
# 搜索最优 max_tokens 和 temperature 组合
python llm_bench.py optimize auto-tune \
--api "http://localhost:11434/v1/chat/completions" \
--key "ollama" \
--model "qwen2.5:7b" \
--param max_tokens:64,128,256,512 \
--param temperature:0.0,0.3,0.7,1.0 \
--metric balance --goal maximize --top 5
| 参数 | 描述 | 默认值 |
|---|---|---|
| ------ | ------ | -------- |
--param | 参数网格,格式 key:val1,val2,val3(可多次使用) | 必填 |
--metric | 优化指标 (tps/ttft/balance) | balance |
--goal | 优化方向 (maximize/minimize) | maximize |
--rounds | 每组测试轮次 | 1 |
--top | 输出前N个最优结果 | 5 |
| 指标 | 公式 | 说明 |
|---|---|---|
| ------ | ------ | ------ |
| tps | avg_tps × success_rate | 吞吐量优先 |
| ttft | (1000/ttft) × success_rate | 延迟优先 |
| balance | tps × success_rate / (1 + ttft/1000) | 综合平衡 |
| 参数 | 描述 | 默认值 |
|---|---|---|
| ------ | ------ | -------- |
--api | OpenAI兼容API端点 | 必填 |
--key | API密钥 | 必填 |
--model | 模型名称 | 必填 |
--mode | 测试模式 (quick/full) | quick |
--rounds | 测试轮次 | 3 |
--duration | 压力测试时长(分钟) | 必填 |
--concurrency | 并发线程数 | 1 |
--max-tokens | 每请求最大Token | 128 |
| # | 类别 | 数量 | 描述 |
|---|---|---|---|
| --- | ------ | ------ | ------ |
| 1 | 短文本 | 10 | 不同max_tokens (32~512) |
| 2 | 数学计算 | 5 | 精确推理 (temp=0) |
| 3 | 创意写作 | 5 | 不同温度 (0.5~1.2) |
| 4 | 知识问答 | 5 | 事实性问题 (temp=0.3) |
| 5 | 代码生成 | 5 | 编程任务 (temp=0.2) |
| 6 | 逻辑推理 | 5 | 推理链 (temp=0.1) |
| 7 | 长文本生成 | 3 | 深度输出 (max_tokens=512) |
| 8 | 多语言 | 2 | 中/英/日/法混合 |
| 指标 | 描述 |
|---|---|
| ------ | ------ |
| TTFT | Time To First Token 首Token延迟 |
| TPS | Tokens Per Second 吞吐量 |
| ITL | Inter-Token Latency Token间延迟 |
| P50/P90/P99 | 百分位数统计 |
默认输出到 benchmark_logs/(脚本同级目录下),可通过环境变量 LLM_BENCH_LOG_DIR 自定义:
export LLM_BENCH_LOG_DIR="/custom/path"
python llm_bench.py benchmark ...
输出文件:
bench_*.json — 基准测试原始数据stress_*.json — 压力测试原始数据report_*.html — 可视化HTML报告report_*.pdf — PDF格式报告optimize_*.html — 优化分析报告optimize_tune_*.json — 自动调参结果.state/*.json — 任务状态文件llm-benchmark/
├── llm_bench.py # 主程序 (2460行)
├── SKILL.md # 本文档
├── references/
│ ├── design.md # 技术设计文档
│ ├── dependencies.md # 依赖说明
│ └── examples.md # 使用示例
└── benchmark_logs/ # 输出目录 (自动创建)
└── .state/ # 任务状态 (自动创建)
共 1 个版本