# 01fish LLM Radar

> 用 7 个客观 benchmark（GSM8K / MATH / MMLU / MMLU-Pro / C-Eval / IFEval / HumanEval）快速评测任意 OpenAI 兼容 API 的大模型。支持 DeepSeek 官方 / OpenRouter / 硅基流动 / 火山引擎 / 自部署 vLLM，一键多模型横评 + 单模型深度 profile。

- Skill: `orangeviolin/01fish-llm-radar` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add orangeviolin/01fish-llm-radar`
- Raw SKILL.md: https://api.skillmd.com/api/skills/orangeviolin/01fish-llm-radar/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: OrangeViolin (https://skillmd.com/u/orangeviolin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/orangeviolin/01fish-llm-radar

---


# 01fish-llm-radar

**定位**：独立开发者 / 创业者的**模型选型初筛工具**。30 分钟内把 20 个候选模型压缩到 5 个，再拿你的真实业务场景去复测那 5 个。

评测框架参照北大 [OpenDCAI/One-Eval](https://github.com/OpenDCAI/One-Eval) 的 `bench_gallery.json` 和 `bench_config.json` 配置选 benchmark，runner / scorer 自己写（One-Eval 是 agentic 评测框架，不适合纯跑分场景）。

---

## 触发词

| 触发词 | 场景 |
|--------|------|
| `/llm-radar <模型>` | 单模型完整评测（7 bench × 50 题） |
| `/llm-radar <模型A>,<模型B>` | 多模型横评 |
| `/llm-radar compare A vs B` | 两模型直接对决，出差异报告 |
| `/llm-radar --bench math,mmlu-pro <模型>` | 指定 bench 跑 |
| `/llm-radar --custom <endpoint> <model-name>` | 评测自部署 vLLM / Ollama endpoint |
| `/llm-radar report` | 扫描已有 summary 重新出报告 |
| "评测模型 xxx" / "跑 benchmark xxx" / "横评 xxx" | 自然语言触发 |

---

## 支持的评测维度（7 个 bench）

| # | Benchmark | 样本 | 考核能力 | 数据源 |
|---|-----------|------|---------|--------|
| 1 | GSM8K | 100 | 小学数学应用题（多步算术推理） | openai/gsm8k |
| 2 | MATH | 50 | 竞赛级数学题（AMC / AIME 风格） | HuggingFaceH4/MATH-500 |
| 3 | MMLU-数学 | 100 | 大学数学选择题 | cais/mmlu 数学 5 子集 |
| 4 | MMLU-Pro | 50 | 高阶知识（10 选 1，最强区分度） | TIGER-Lab/MMLU-Pro |
| 5 | C-Eval | 50 | 中文学科（52 科目均匀抽样） | ceval/ceval-exam |
| 6 | IFEval | 50 | 指令遵循（程序化规则验证） | google/IFEval |
| 7 | HumanEval | 50 | 代码生成 pass@1（沙箱执行） | openai_humaneval |

详细介绍见 `references/bench-gallery.md`。

---

## 快速开始（3 步）

### 1. 配置 API Key

复制 `.env.example` 到 `.env`，填至少一个 provider 的 key：

```bash
# DeepSeek 官方（仅支持 deepseek-v4-pro / deepseek-v4-flash）
DEEPSEEK_API_KEY=sk-...

# OpenRouter（推荐，一个 key 覆盖 100+ 模型）
OPENROUTER_API_KEY=sk-or-v1-...

# 硅基流动（可选，补充国内模型）
SILICONFLOW_API_KEY=sk-...

# 火山引擎（可选，用于字节 Doubao-Seed-2.0-Pro）
VOLCES_API_KEY=...
```

### 2. 安装依赖

```bash
cd scripts/
python3 -m venv .venv && source .venv/bin/activate
pip install openai datasets python-dotenv tqdm
```

### 3. 跑评测

```bash
# 单模型跑所有 7 个 bench（50 题）
python runner.py --model deepseek-v4-flash --bench gsm8k --n 50

# 多模型横评（用 orchestrator）
# 编辑 orchestrator.py 的 MODELS 列表，然后：
python orchestrator.py

# 生成对比报告
python compare.py

# 深度分析（成本 / 性价比 / 思考效率 / 响应速度）
python analyze.py
```

---

## 核心文件

```
01fish-llm-radar/
├── SKILL.md                 # 本文档
├── README.md                # GitHub 开源说明（面向外部用户）
├── scripts/
│   ├── runner.py            # 主评测脚本（单 model × 单 bench）
│   ├── benches.py           # 8 个 bench 的 loader + prompt + scorer
│   ├── orchestrator.py      # 多模型并行跑
│   ├── compare.py           # 生成对比报告（均分 + 矩阵 + 单项榜单）
│   └── analyze.py           # 深度分析（成本/思考效率/速度/稳定性）
├── references/
│   ├── SETUP.md             # Key 获取和配置详细指南
│   ├── bench-gallery.md     # 7 个 benchmark 的深度介绍
│   └── providers.md         # 各 provider 配置（OR allowlist 等）
└── .env.example             # Key 模板
```

---

## 产出物

每次跑完评测，在 `results/` 目录生成：

```
results/
├── report.md                           # 最终对比报告（含 5 个反直觉 + 单项榜单 + 性价比）
└── raw/
    ├── <bench>-<model-slug>.jsonl      # 每题的 prompt / 输出 / reasoning / token / 耗时
    └── <bench>-<model-slug>.summary.json  # 汇总（accuracy / tokens / 耗时）
```

---

## Provider 路由规则

基于 `resolve_provider()` 函数：

| 模型前缀 | 走哪个 provider | 说明 |
|---------|---------------|------|
| `deepseek-v4-pro` / `deepseek-v4-flash` | DeepSeek 官方 API | 最便宜 |
| `xiaomi/*` | OpenRouter + `provider.only=["xiaomi"]` | |
| `qwen/*` | OpenRouter + `provider.only=["qwen"]` | 需 OR allowlist 开启 |
| `moonshotai/*` | OpenRouter + `provider.only=["moonshotai"]` | |
| `z-ai/*` | OpenRouter + `provider.only=["z-ai"]` | |
| `minimax/*` | OpenRouter + `provider.only=["minimax"]` | |
| `stepfun/*` | OpenRouter + `provider.only=["stepfun"]` | |
| `bytedance-seed/*` | OpenRouter + `provider.only=["seed"]` | 注意 provider slug 不同 |
| `tencent/*` | OpenRouter（不加 filter，走默认） | 目前走 siliconflow |
| 其他 | OpenRouter 不加 filter | |

扩展新 provider：编辑 `runner.py` 的 `resolve_provider()` 函数。

---

## 核心设计原则

1. **客观打分 only**：所有 7 个 bench 都是程序化打分，不用 LLM-as-judge（避免主观偏差）
2. **Thinking 模式默认**：适配 2026 年主流模型都带 reasoning 的现状，`max_tokens=8192`
3. **样本 50-100**：追求快速反馈而非统计严谨（±3-5% 抖动是可接受的选型信号）
4. **全透明原始数据**：每道题的 prompt / 输出 / 对错都保存 jsonl，可追溯

---

## 故障处理

| 症状 | 处理 |
|------|------|
| OpenRouter 429 限流 | 降低 `--concurrency`，或换 provider |
| provider "No allowed providers" | 去 [OR 设置](https://openrouter.ai/settings/preferences) 把对应 provider 加 allowlist |
| HF 数据集 gated error | GPQA 等需 HF token，跳过或申请 |
| 某模型最后几题卡死 | 已在 orchestrator 里自动跳过，看 summary 的 `partial: true` 字段 |
| HumanEval 代码有副作用 | 默认 subprocess 执行 15s timeout，必要时可改 Docker 沙箱 |

---

## 参考资料

- 北大 One-Eval（上游 benchmark 配置来源）：https://github.com/OpenDCAI/One-Eval
- 本 skill GitHub：https://github.com/OrangeViolin/01fish-llm-radar

---

## 诚实声明

本 skill **不是严格的学术 benchmark**，定位为独立开发者 / 创业者的选型初筛工具。关键差异：

- ❌ 单次运行，没有多 seed 平均
- ❌ 样本只有 50-100 题
- ❌ 未覆盖长文本 / Agent / 创意写作 / 多模态场景
- ✅ 客观打分、透明原始数据、多维度交叉验证
- ✅ 能在 30 分钟内筛掉 70% 的候选模型

**真正选模型，永远以"你自己业务场景里跑一批真实数据"为准**。本 skill 只是帮你节省初筛那一步。

