面向多模型推理评估、动态路由和成本预算分配的实验工具。项目的核心方法是 BOCQ(Bayesian Optimal Cost-aware Querying):把每次模型调用视为带可靠性、价格和延迟的观测,持续更新候选答案后验,并决定停止还是调用下一个模型。
BOCQ 将传统的“为问题选择一个模型”改写为“在预算内逐步获取证据”:
免费探针 -> 答案簇 -> 贝叶斯后验 -> VOI/成本决策 -> 停止或升级
- 免费模型是低成本探针,不直接等同于最终答案。
- 开放题把语义相近的回答归入同一答案簇,减少字符串差异造成的假分歧。
- 后验保留 unseen mass,为尚未出现的正确答案留下概率,避免过早自信。
- 下一次调用按照预期信息增益(VOI)相对价格和延迟排序。
- 所有步骤记录模型、观测、后验、成本、延迟和停止原因,便于解释与复盘。
- 正式数据入口:
datasets/confirmed_quality_test.jsonl - 数据规模:2169 题,其中 417 题包含图像
- 最新正式实验:50% type-balanced 抽样,1084 题;校准集 323 题,测试集 761 题
- 实验模型池:14 个模型,覆盖 free、cheap、mid、strong、frontier 和 multimodal
- 最新汇总:
reports/experiments/exp_confirmed_50pct_type_balanced_gpt55judge_20260707/ - 消融与 baseline 汇总:
reports/division2_exp_confirmed_50pct_type_balanced_20260707/ - 最终图表:
reports/visualization_sci_20260707/
仓库只保留最新确认数据、正式汇总和最终图表。候选数据集、历史试跑、原始调用矩阵、日志和重复导出物不纳入版本控制。详见 数据与结果说明。
以下结果来自最新测试集的 761 题 test split:
| 策略 | Accuracy | Total cost (CNY) | Avg latency (s) |
|---|---|---|---|
| Best single | 78.71% | 4.1711 | 13.45 |
| BOCQ-20 | 76.87% | 1.8666 | 25.56 |
| BOCQ-10 | 76.08% | 1.4493 | 23.58 |
| BOCQ-5 | 75.30% | 1.1790 | 21.89 |
BOCQ-20 保留约 97.7% 的 best-single 准确率,同时节省约 55.2% 的总成本。oracle_model 是事后选择任一正确模型的理想上界,不是可部署策略。
要求 Python 3.10 或更高版本。
python -m venv .venvWindows PowerShell:
.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txtLinux/macOS:
source .venv/bin/activate
python -m pip install -r requirements.txt检查最新数据集并运行离线 smoke test:
python scripts/check_dataset.py --dataset datasets/confirmed_quality_test.jsonl
python scripts/run_eval.py --mock复制环境变量模板并填写 API key。不要将真实 key 提交到 Git:
$env:DMXAPI_API_KEY="your-key"
streamlit run app/streamlit_demo.pyLinux/macOS:
export DMXAPI_API_KEY="your-key"
streamlit run app/streamlit_demo.py浏览器访问 http://127.0.0.1:8501。交互页面支持极速、均衡和专家三种预算档位,并实时展示临时答案、后验置信度、路由轨迹、累计成本和延迟。
小规模真实 API 检查:
python scripts/run_eval.py \
--dataset datasets/confirmed_quality_test.jsonl \
--model-names qwen3.5-flash,qwen3.7-plus \
--max-problems 10统一实验套件入口:
python scripts/run_experiment_suite.py \
--dataset datasets/confirmed_quality_test.jsonl \
--sample-ratio 0.5 \
--sampling-mode type_balanced真实运行会产生 API 费用。建议先限制 --max-problems、--model-names 或 --sample-ratio。
正式实验汇总完成后,可生成统一表格和最终可视化:
python scripts/build_experiment_tables.py --help
python scripts/build_report_visualizations.py --help最终图表发布 PNG、SVG 和 PDF;汇总表提供 CSV、Markdown、PNG 和 PDF。投稿所需 TIFF 可在本地通过 --formats svg,pdf,png,tiff 额外生成,但不提交到 Git。
app/ Streamlit 交互应用
configs/ 模型、提示词、策略和质量审查配置
datasets/
confirmed_quality_test.jsonl 最新正式数据集
assets/confirmed_quality_test/ 最新图像资产
reasoning_demo.jsonl 离线 smoke test 小样本
docs/ 技术设计、实验方案和结果说明
reports/
experiments/.../summaries/ 最新正式实验汇总
division2_exp_.../summaries/ 消融与 baseline 汇总
task3_analysis/summaries/ 校准、多模态、延迟与案例分析
visualization_sci_20260707/ 最终图表、表格和绘图源数据
scripts/ 数据检查、实验运行和报告生成脚本
src/llm_router/ BOCQ、baseline、评测、客户端和指标实现
- 质量:accuracy、completion rate、format valid rate
- 成本:total/average cost、cost per correct、wasted upgrade cost
- 延迟:average latency、p95 latency、first-answer latency
- 路由:upgrade rate、effective upgrade rate、average steps
- 后验:posterior confidence、posterior entropy、ECE
- 综合:accuracy retention、budget saving、Pareto frontier/distance
最新数据的字段、来源和保留策略见 datasets/README.md。每条公开基准改编记录保留 source_benchmark、source_url、source_license 和 citation 等元数据。使用或再分发图像前,请单独核对对应数据源许可。
- LLMRouterBench:response matrix、离线回放和 Pareto 分析。
- RouteLLM:强弱模型路由和成本质量权衡。
- FrugalGPT:由便宜模型向昂贵模型级联。
- BEST-Route:模型选择与采样次数的联合预算。
- Test-Time Compute Scaling:按问题分配测试时计算预算。