文档处理API基准测试套件

Reducto文档处理API的基准测试套件和微调模型家族,用于评估模型在API端点选择、参数构建和多跳链处理等方面的性能。

  • by Reza2kn
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Reza2kn/reducto-agent-benchmark

使用说明

代理

代理产品.com -一个基准套件和一系列专门用于Reduto文档处理API的微调模型。


这里有什么

组件 状态
API探头基准-27款·22款硬质+10款标准探头 ✅ 502次运行完成
MCP竞赛——27个模型×7个对抗性MCP探针 ✅ 完成
实时跟踪用户界面 ✅ benchmark.agentreducto.com
MCP服务器v0.2.0--所有7个工具 ✅ 经过全面测试
R1训练数据-直接API跟踪 ✅ 16669个验证示例
R2训练数据——MCP多跳链 ✅ 20000个验证示例
R3训练数据——以差距为中心+终止 ✅ 14781个验证示例
DPO首选项对--循环终止修复 ✅ 1669双
HF上的SFT数据集(Reza2kn/reducto-api-tool-calls) ✅ 51069(45969次列车·5100瓦尔)
HF上的DPO数据集(Reza2kn/reducto-dpo-termination) ✅ 1669双
降低LoRA-Q6K(0.8B)——基线微调 ✅ 基准:9/21 MCP·20/30 API
Qwen3.5-35B-A3B微调 🚧 数据集准备就绪,训练将在H100进行
HF Space-浏览器内演示 🚧 待定训练重量

API探测基准

两层API-特异性探针,每层得分为0-3。测试模型是否选择了正确的端点,构造了正确的参数,在没有手持的情况下处理了边缘情况和多跳链。

实时结果: 基准.agentreducto.com

硬探头——17个型号×22个探头(354次运行)

型号 分数
克劳德·海库4.5+思考 62/66
Gemini 3.1 Flash Lite预览版 62/66
Qwen3.5-122B-A10B 62/66
OpenAI o3(推理能力=高) 61/66
Gemini 3.1 Pro(自定义工具预览版) 59/66
克劳德作品4.6+思考 57/60(20/22个探针)
GPT-OSS 20B通过Groq 57/66
StepFun第3.5步Flash 57/66
Nemotron Nano 30B(深红外fp4) 55/66
Qwen3编码器下一页(离子流fp8) 52/66
OpenAI o4 mini(推理能力=高) 51/66
Qwen-0.8B-代理JSON-Q6K(本地) 38/66
尼莫特隆超级120B(内比乌斯bf16) 32/66
Codex迷你最新 6/66
Arcee三一大(黄金) 3/66
西北偏小 0/66
chunk_section_rag      citations_bbox          citations_no_chunking
classify_page_limit    classify_then_route     edit_basic_fill
edit_flatten_lock      edit_form_schema        embedding_optimized_flag
empty_result_ocr_retry filter_blocks_clean     get_job_poll
include_images_chart   jobid_expiry_recovery   merge_tables_crosspage
optimize_latency_not_deep  page_range_cost     return_images_array
split_then_extract_section system_prompt_units table_cutoff_preserve
upload_reuse

标准探头——15个型号×10个探头(150次运行)

型号 分数
克劳德·海库4.5+思考 29/30
GPT-5.4迷你版 29/30
《盗梦空间水星2》 29/30
《盗梦空间》水星编码 29/30
OpenAI o4 mini(推理能力=高) 29/30
GPT-5.4纳米 28/30
Qwen3.5-35B-A3B(阿特拉斯云fp8) 28/30
小米MiMo V2 Pro(fp8) 27/30
Qwen3.5闪光(02-23) 26/30
Qwen3编码器下一页(离子流fp8) 25/30
西北偏小 23/30
Qwen-0.8B-代理JSON-Q6K(本地) 21/30
Qwen-0.8B-还原LoRA-Q6K(本地) 20/30
阿里巴巴同益深度研究30B-A3B 17/30
液体LFM-2.5 1.2B思维(免费) 0/30
agentic_scopes   array_extract      deep_extract_off  document_metadata
jobid_chaining   jsonbbox_format    ocr_mode          return_figure_images
split_rules      url_array

MCP竞赛

7个对抗性企业工作流上的27个模型——多跳链、持久作业扇出、双文档并行处理、代理作用域阵列。测试模型是否读取MCP工具定义或幻觉REST API参数。

竞赛中使用的工具模式直接来源于 还原MCP服务器 在这个repo中 --来自的确切参数名称、类型和描述 mcp-server/src/index.ts.对抗性提示故意使用REST API参数名称(例如。 schema_json, allow)展示产生幻觉的模型,而不是阅读规范。在我们的MCP服务器上看到或训练过的模型将具有结构优势。

实时结果: 代理产品

全排行榜(27个型号×7个探头)

型号 分数
克劳德·海库4.5+思考 21/21✅
克劳德作品4.6+思考 20/21
OpenAI o3(推理能力=高) 20/21
OpenAI o4 mini(推理能力=高) 20/21
经Groq的Qwen3 32B 20/21
MiniMax M2.7(高速) 20/21
Gemini 3.1 Flash Lite预览版 20/21
GPT-OSS 20B通过Groq 19/21
《盗梦空间水星2》 18/21
Kimi K2.5通过烟花 17/21
GPT-5.4纳米 17/21
GPT-5.4迷你版 16/21
西北偏小 16/21
Gemini 3.1 Pro(自定义工具预览版) 16/21
Arcee三一大(黄金) 14/21
StepFun第3.5步Flash 13/21
Qwen3.5-122B-A10B 13/21
小米MiMo V2 Pro(fp8) 13/21
Qwen3编码器下一页(离子流fp8) 12/21
Qwen3.5闪光(02-23) 12/21
GLM-5涡轮增压 11/21
Qwen3.5-35B-A3B(阿特拉斯云fp8) 9/21
Qwen-0.8B-代理JSON-Q6K(本地) 9/21
Qwen-0.8B-还原LoRA-Q6K(本地) 9/21
Nemotron Nano 30B(深红外fp4) 7/21
尼摩特隆超级120B(内比乌斯bf16) 5/21
LFM-2.5 1.2B思维Q6K(本地) 0/21

降低LoRA-Q6K基线(0.8B微调)

第一个微调检查点,仅在R1数据上训练(直接API跟踪,无MCP链):

基准 得分 备注
MCP探针 9/21 与碱基相同——R1数据没有链实例
API探头 20/30 比基础有了实质性改进

钥匙故障模式: 重复循环——模型在得到有效结果后调用相同的工具50-75倍(upload_persist_array_extract:75个电话, split_preserve_extract_range:77个电话)。根本原因:0.8B无法跨上下文跟踪“我已经得到了一个结果”;R1训练数据缺少任何多步链示例。

这一分析直接影响了R2和R3数据集的设计。


MCP服务器

插入MCP服务器,包装所有7个Reduceto端点。所有经过端到端测试的工具,包括 jobid:// 链接和错误路径。

cd mcp-server && npm install
REDUCTO_API_KEY=your_key npx tsx src/index.ts

添加 .mcp.json (克劳德代码/光标/临床/法典):

{
  "mcpServers": {
    "reducto": {
      "command": "npx",
      "args": ["tsx", "mcp-server/src/index.ts"],
      "env": { "REDUCTO_API_KEY": "your_key" }
    }
  }
}
工具 包装 状态
reducto_parse POST /parse ✅ 已测试
reducto_extract POST /extract ✅ 已测试
reducto_split POST /split ✅ 已测试
reducto_classify POST /classify ✅ 已测试
reducto_edit POST /edit ✅ 已测试
reducto_upload POST /upload ✅ 已测试
reducto_get_job GET /job/{id} ✅ 已测试

jobid:// 链接(解析一次→ 提取+拆分,无需重新处理)✅ 测试。


微调管道

训练 Qwen3.5-35B-A3B (3.5B活动参数)针对Reduceto特定工具调用行为的三轮数据集。

数据集轮次

圆形 焦点 原始 已验证 状态
R1 直接API跟踪-所有6个端点,参数覆盖率 36669 16669 ✅
R2 MCP多跳链——8种教师模型 25909 20000 ✅
R3 MCP种族+终止修复的9个目标差距 17690 14781 ✅

R3差距细分:

  1. schema 参数(不是 schema_json)--对抗性提示
  2. filter_blocks / agentic_scopes 作为本机数组
  3. table_cutoff="preserve" 当提示说“允许”时——对抗性陷阱
  4. 4链: upload → parse(persist) → get_job → extract(jobid://)
  5. 双文档扇出:2次解析/获取_作业/提取,具有不同的作业ID
  6. array_extract=True 用于重复行模式
  7. reducto_upload 首先是预签名/过期的URL
  8. citations=True + deep_extract=True 用于合规文档
  9. 链终止 (9669个示例)-修复重复循环:显式“得到结果”→ 输出答案→ “停止”训练信号

DPO首选项对

1669对直接针对回路故障:

  • 选中:最后一个工具结果后的最终文本响应,没有进一步的工具调用
  • 拒绝:在完成结果后重复上次工具调用

DPO创建了一个明确的“不要这样做”梯度,而只有SFT阳性的示例无法做到这一点。

HF数据集

回购 内容 拆分
Reza2kn/reducto-api-tool-calls 51069个SFT示例(R1+R2+R3) 45969列·5100辆
Reza2kn/reducto-dpo-termination 1669个DPO偏好对 --

顶尖教师(按MCP种族分数)

L3验证共识仅统计表现最佳的教师的投票:

  • 克劳德·海库4.5+思考(21/21)
  • Gemini 3.1 Flash Lite(20/21)
  • MiniMax M2.7(20/21)

待定🚧

  • []在H100上启动Qwen3.5-35B-A3B SFT+DPO培训(见 H100_TRAINING.md)
  • []HF空间——通过WebGPU在浏览器中实现量化模型
  • []代理框架基准测试运行(Cursor、Cline、Codex CLI、Gemini CLI)

项目结构

reducto-agent-benchmark/
├── mcp-server/                      # MCP server (TypeScript, v0.2.0)
│   └── src/index.ts                 # 7 tools, retry/backoff, jobid:// chaining
├── benchmark/
│   ├── scripts/                     # Probe runners, scoring, data generators
│   │   ├── bench_mcp_probe.py       # MCP race runner
│   │   ├── bench_param_probe.py     # API hard-probe runner
│   │   ├── gen_mcp_data.py          # R2 MCP chain generator
│   │   ├── gen_mcp_r3_gaps.py       # R3 gap-focused generator
│   │   ├── gen_dpo_termination.py   # DPO preference pair generator
│   │   ├── verify_synthetic_data.py # L1–L4 verification pipeline
│   │   └── upload_combined.py       # Push merged splits to HF
│   ├── results/                     # Per-model JSON score files
│   └── data/
│       ├── synthetic_training/      # R1 verified examples
│       ├── synthetic_training_mcp/  # R2 MCP examples
│       ├── synthetic_training_r3/   # R3 gap-focused examples
│       ├── dpo_termination/         # DPO preference pairs
│       └── combined_training/       # Merged train/val splits
├── site/                            # Landing page (agentreducto.com)
├── gen_tracker.py                   # Live generation dashboard (port 8081)
└── train_35b.py                     # Qwen3.5-35B-A3B training script

作者

Reza Sayar——Reduceto数据工程师