ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MineAnyBuild 基准实战:用 TaoToken 统一 Key 跑通开放世界 AI Agent 空间规划评测

MineAnyBuild 基准实战:用 TaoToken 统一 Key 跑通开放世界 AI Agent 空间规划评测 1. 为什么我要把 MineAnyBuild 接到统一 Key 上跑MineAnyBuild 是 2025 NIPS 上我比较关注的一个基准它评测的不是普通 VQA而是开放世界 AI Agent 的空间规划能力给一段多模态人类指令让 Agent 在《我的世界》里输出可执行的建筑蓝图矩阵。它包含 4000 个任务、500 多种建筑与室内装饰资产还有约 2000 个 VQA 对从空间理解、空间推理、创造力、空间常识四个维度打分。论文里 13 个 MLLM 零样本评测GPT-4o 总分只有 41.02开源模型连可执行蓝图都很难生成——这个结论本身就说明空间规划是当前 Agent 的硬骨头。问题在于复现或二次评测时脚本往往要同时调用多个模型一个负责理解指令一个负责生成蓝图一个当评论模型给创造力打分。如果每个模型都单独配 Key、单独改 base_url配置会散落在十几个文件里跑一次评测光对齐环境就要半天。我试过把 MineAnyBuild 的评测脚本统一走 TaoToken 的 API 通道用一套 Key 管住所有模型调用config.toml 和 settings.json 各写一份骨架就能跑通单任务样例。下面把可复制的配置和最小验证动作完整写出来你照着改路径就能用。2. TaoToken 在评测链路里的位置TaoToken 在这里扮演的是统一模型接入层。MineAnyBuild 的评测脚本本身不关心你用的是哪家模型它只发 OpenAI 兼容格式的请求TaoToken 提供的就是这个兼容入口把不同模型的调用收敛到一个 base_url 和一把 Key 上。这样你在 config.toml 里切换评测模型时只改 model 字段不用动鉴权逻辑。需要提前准备的东西不多一个 TaoToken 账号、一把 API Key、Python 3.10 环境以及 MineAnyBuild 的评测仓库。Key 在控制台创建地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 创建后复制保存后面写进 settings.json。API 通道的基础地址是 https://taotoken.net/api 注意这个地址不带任何查询参数直接作为 base_url 使用。如果你只是先验证模型能不能理解空间指令可以先用模型对话页面手动试一条指令地址 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。但要做批量评测还是得落到脚本配置上这也是本篇的重点。3. 可复制的 config.toml 与 settings.json 骨架MineAnyBuild 的评测入口通常读两个配置一个管任务与模型路由一个管鉴权和运行时参数。下面这份 config.toml 是我实际跑通单任务样例时用的骨架字段名按你仓库里的实际解析逻辑微调即可。# config.toml —— MineAnyBuild 评测主配置 [benchmark] name MineAnyBuild task_set spatial_planning_mini # 先用小任务集验证 task_ids [task_0001] # 单任务样例 output_dir ./runs/mineanybuild_task0001 save_blueprint true # 保存可执行蓝图矩阵 save_metrics true [agent] planner_model gpt-4o critic_model claude-3-7-sonnet max_turns 8 temperature 0.2 blueprint_format matrix # 输出建筑蓝图矩阵 [evaluation] dimensions [spatial_understanding, spatial_reasoning, creativity, spatial_commonsense] creativity_judge llm_critic # 创造力用评论模型打分 vqa_pairs 2000 [api] provider taotoken base_url https://taotoken.net/api timeout 120 max_retries 3settings.json 管鉴权和运行时环境Key 只放这里不要写进 config.toml避免误提交。{ taotoken: { api_key: sk-你的TaoTokenKey, base_url: https://taotoken.net/api, default_model: gpt-4o }, runtime: { concurrency: 2, log_level: INFO, cache_dir: ./.cache/mineanybuild }, models: { planner: gpt-4o, critic: claude-3-7-sonnet, fallback: qwen2.5-vl } }两个文件的分工要清楚config.toml 决定“评什么、怎么评”settings.json 决定“用谁的通道、拿什么鉴权”。切换评测模型时只动 settings.json 里的 models 段config.toml 的 evaluation 维度保持不变这样不同模型之间的分数才可比。4. 接入脚本的改造点MineAnyBuild 原始脚本大概率直接用 OpenAI SDK 或 requests 发请求。改造的核心只有一处把所有客户端的 base_url 和 api_key 指向 TaoToken。以 OpenAI SDK 为例改造后是这样。import json import openai with open(settings.json, r, encodingutf-8) as f: settings json.load(f) client openai.OpenAI( api_keysettings[taotoken][api_key], base_urlsettings[taotoken][base_url], ) def call_planner(prompt: str, model: str) - str: resp client.chat.completions.create( modelmodel, messages[ {role: system, content: 你是空间规划 Agent输出可执行建筑蓝图矩阵。}, {role: user, content: prompt}, ], temperature0.2, ) return resp.choices[0].message.content如果你用的是 requests 直接发注意 URL 拼接base_url 是 https://taotoken.net/api 补全路径时不要重复加 /v1具体以你仓库里的请求路径为准。改造完成后脚本里所有模型调用都会经过同一条通道日志里能看到统一的请求记录排查问题时不用再翻多个厂商后台。5. 最小验证跑通单任务空间规划样例配置改完先别急着跑全量 4000 任务用单任务样例验证链路。命令大致如下具体入口按你仓库的 CLI 调整。python -m mineanybuild.eval \ --config config.toml \ --settings settings.json \ --task-id task_0001 \ --dry-run false跑之前确认三件事settings.json 里的 Key 已替换、config.toml 的 task_ids 只留一个、output_dir 目录可写。执行后如果链路正常终端会先打印任务指令再输出模型返回的蓝图矩阵最后写入指标文件。[INFO] loading task task_0001 ... [INFO] instruction: 建造一座带斜屋顶的两层小屋含门廊 [INFO] calling planner modelgpt-4o via taotoken [INFO] blueprint matrix shape(16, 16, 8) [INFO] metrics: spatial_understanding0.62 spatial_reasoning0.48 [INFO] creativity0.55 spatial_commonsense0.71 [INFO] saved to ./runs/mineanybuild_task0001核对输出指标时重点看两项蓝图矩阵的 shape 是否与任务要求的建筑尺寸一致四个维度的分数是否都落在 0 到 1 之间。如果矩阵 shape 是 (0,0,0) 或分数全为 0说明模型返回内容没被正确解析先查返回体是不是被截断。单任务跑通后再把 task_ids 换成完整任务集做批量评测。6. 本篇常见错排查报 401 或鉴权失败九成是 settings.json 里的 Key 没替换或者复制时带了空格。检查 api_key 字段首尾确认没有多余字符。另外确认 base_url 写的是 https://taotoken.net/api 不要自己拼 /v1 后缀。报模型不存在config.toml 里的 planner_model 和 settings.json 里的 models.planner 要一致且模型名必须是通道支持的名称。先用模型对话页面确认该模型可用再写进配置。蓝图矩阵解析失败模型返回的是自然语言而不是矩阵格式时解析器会报错。在 system prompt 里明确要求“只输出矩阵不要解释”并把 temperature 压到 0.2 以下。如果仍不稳定可以在脚本里加一层正则提取。批量评测中途断连并发调高后容易出现超时。把 settings.json 的 concurrency 降到 2config.toml 的 max_retries 提到 3timeout 给到 120 秒。长任务建议开日志轮转避免单文件过大。分数与论文对不上论文用的是零样本设置如果你在 prompt 里加了 few-shot 示例分数会偏高这属于正常现象。对比时保持 prompt 策略一致否则四个维度的分数没有可比性。7. 继续往下走单任务跑通只是起点。如果你要长期做空间规划评测或者把 MineAnyBuild 接进自己的 Agent 训练闭环建议把模型调用统一收敛到 Coding Plan地址 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 这样批量评测和日常编码共用一套配额不用来回切 Key。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有完整的请求示例和参数说明改脚本时对着看能少踩不少坑。控制台在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 可以查调用量和余额。Claude Code 相关的接入配置在 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_code_anthropicutm_campaignrewrite 如果你用 Claude 系模型当评论模型这份配置能直接复用。我自己的习惯是每次改完 config.toml 先跑单任务确认矩阵 shape 和四个维度分数都正常再放批量。这样即使某次模型返回异常也能在最小范围内定位不会浪费一整轮评测配额。
返回列表