CommonRouterBench
收藏资源简介:
CommonRouterBench为多步代理、长上下文RAG和vibecoding循环等高消耗、多轮场景提供了每一步的LLM路由黄金标签。这些标签是通过分析成功的跟踪记录并执行顺序降级搜索生成的,以找到仍能通过严格任务检查的最便宜的能力层级。数据集包括question_bank.jsonl和manifest.json文件,用于评估路由器或训练层级预测器。
CommonRouterBench provides golden labels for LLM routing at each step for high-cost, multi-turn scenarios such as multi-step agents, long-context RAG, and vibecoding loops. These labels are generated by analyzing successful trace logs and performing sequential downgrading searches to identify the cheapest capability level that still passes strict task checks.
CommonRouterBench 数据集概述
数据集简介
CommonRouterBench 为高消耗、多轮次场景(如多步智能体、长上下文 RAG、编码循环)提供逐步骤的大语言模型路由黄金标签。该数据集通过分析成功执行轨迹并进行顺序降级搜索来生成标签,旨在找到在满足严格任务检查前提下最经济的能力层级,而非依赖有缺陷的 LLM-as-judge 评分或单次提问。
核心用途
- 评估路由器:用于评估在高消耗、多轮次场景下构建的路由器的性能。
- 训练层级预测器:使用真实的对话前缀(对话内容、工具输出、差异对比)来训练层级预测模型。
数据内容与结构
数据文件
data/question_bank.jsonl:包含所有路由步骤记录的单文件。data/manifest.json:包含各数据源行数统计和模式元数据。
数据记录字段
每条记录至少包含以下字段:id、benchmark、scenario、instance_id、step_index、total_steps、messages、target_tier、target_tier_id。
能力层级定义
数据集的监督标签仅基于能力层级,使用英文标签和数字ID。
| 目标层级 (字符串) | 目标层级ID (整数) | 层级 (英文描述) |
|---|---|---|
low |
0 | Low |
mid |
1 | Medium |
mid_high |
2 | Medium-high |
high |
3 | High |
数据分布统计
数据集当前版本包含 970 条路由步骤记录。
按基准数据集 (benchmark) 分布
| 基准数据集 | 记录数 | 占比 |
|---|---|---|
swebench |
336 | 34.6% |
bfcl |
248 | 25.6% |
mtrag |
193 | 19.9% |
qmsum |
145 | 14.9% |
pinchbench |
48 | 4.9% |
| 总计 | 970 | 100% |
黄金层级 (target_tier) 整体分布
| 目标层级 | 目标层级ID | 记录数 | 占比 |
|---|---|---|---|
low |
0 | 689 | 71.0% |
mid |
1 | 62 | 6.4% |
mid_high |
2 | 49 | 5.1% |
high |
3 | 170 | 17.5% |
| 总计 | — | 970 | 100% |
各基准数据集内的黄金层级分布(记录数)
| 基准数据集 | 记录数 | low |
mid |
mid_high |
high |
|---|---|---|---|---|---|
bfcl |
248 | 239 | 8 | 1 | 0 |
mtrag |
193 | 183 | 8 | 1 | 1 |
pinchbench |
48 | 41 | 3 | 3 | 1 |
qmsum |
145 | 132 | 10 | 3 | 0 |
swebench |
336 | 94 | 33 | 41 | 168 |
名义定价(美元/每百万令牌)
定价常量定义在 main.pricing 模块中。
输出(补全)令牌
公开 target_tier |
美元 / 每百万输出令牌 |
|---|---|
low |
0.5 |
mid |
2.0 |
mid_high |
5.0 |
high |
25.0 |
输入、缓存读取和缓存写入(仅用于 router_accounting)
公开 target_tier |
美元 / 每百万输入 | 美元 / 每百万缓存读取 | 美元 / 每百万缓存写入 |
|---|---|---|---|
low |
0.26 | 0.13 | 0.26 |
mid |
0.30 | 0.059 | 0.30 |
mid_high |
0.50 | 0.05 | 0.08333 |
high |
5.0 | 0.50 | 6.25 |
评估指标与规则
评估由 main.eval 模块计算。
核心指标
tier_match_accuracy:在可评估行(无error)中,预测层级ID与黄金层级ID完全匹配的比例(步骤级别)。valid_response_rate:获得可用预测(无记录error)的行比例。- 通过 (
passed):当pred_tier_id >= gold_tier_id(预测层级能力不低于黄金层级)。有error的行不计为通过(步骤级别)。 pass_rate:所有行中通过的比例(步骤级别语义)。cost_savings_score(旧称section_11):与始终使用high层级(ID 3)的基线相比,在名义成本(仅输出令牌,固定补全长度)下的节省百分比。
路由器核算指标 (router_accounting)
在 compute_router_accounting_metrics 中计算,使用更丰富的每步骤成本模型(输入+缓存读取+缓存写入+输出)和轨迹级别的通过/失败判定。
total_trajectories:评分行列表中不同instance_id组的数量。passed_trajectories/exact_match_trajectories:轨迹级别通过 / 所有步骤完全匹配的数量。evaluable_step_count:无error且具有整数层级ID的步骤数(计入D_usd/N_usd)。skipped_step_count:带有error的行数。D_usd:在可评估步骤上Σ (baseline_cost − gold_cost)的总和。N_usd:根据轨迹通过或失败的规则计算(见数据集详情)。pass_rate_percent:100 × passed_trajectories / total_trajectories。exact_match_rate_percent:100 × exact_match_trajectories / total_trajectories。accounting_savings_score_percent:当D_usd > 0时,为100 × N_usd / D_usd。overall_score_percent:pass_rate_percent、exact_match_rate_percent、accounting_savings_score_percent的平均值。
使用方式
快速开始
-
安装包: bash pip install CommonRouterBench
(注意:PyPI 分发名为
CommonRouterBench,但在代码中应import main。) -
评估路由器: python from main.eval import FunctionPredictor, run_question_bank_eval oracle = FunctionPredictor(lambda row: row["target_tier_id"]) summary = run_question_bank_eval(oracle, n=20, seed=1) print(summary["router_accounting"])
数据访问 API
python from main import iter_question_bank, iter_routing_supervision
遍历整个问题库
for row in iter_question_bank(): ...
仅遍历特定基准数据集(如 "swebench")的行
for row in iter_routing_supervision("swebench"): messages = row["messages"] tier = row["target_tier"] tier_id = row["target_tier_id"]
预测器类型
FunctionPredictor:包装任何callable(row: dict) -> int函数(启发式方法、sklearnpredict等)。LlmDigitClassifierPredictor:围绕OpenAICompatRouterClassifier和question_bank_messages_to_classifier_prompt的可选 OpenAI 兼容聊天包装器。OpenAICompatRouterClassifier:用于通过 OpenAI 兼容 HTTP API 调用聊天模型的参考集成。模型回复必须是单个字符0–3。




