代理
代理产品.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差距细分:
schema参数(不是schema_json)--对抗性提示filter_blocks/agentic_scopes作为本机数组table_cutoff="preserve"当提示说“允许”时——对抗性陷阱- 4链:
upload → parse(persist) → get_job → extract(jobid://) - 双文档扇出:2次解析/获取_作业/提取,具有不同的作业ID
array_extract=True用于重复行模式reducto_upload首先是预签名/过期的URLcitations=True+deep_extract=True用于合规文档- 链终止 (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数据工程师
