1. AGENTVISTA 的 27.3%:多模态 Agent 长程评测,先卡在 Key 上
AGENTVISTA 这类多模态 Agent 长程评测,最能暴露问题的反而不是模型能力本身,而是你手上那堆各自独立的 API Key。这个由香港科技大学、北卡罗来纳大学教堂山分校等机构推出的基准,要求 Agent 在真实野生的图片里完成 10 轮以上的混合工具调用,Web Search、Image Search、Code Interpreter 常常要交替出现。最强模型 Gemini-3-Pro 配齐整套工具也只有 27.3% 的准确率,视觉误识别约占错误的 40%。当你想在自己的环境里复现这套评测时,第一道坎通常不是 prompt,而是 Gemini、Qwen-VL 这些模型的 Key 申请流程各不相同,控制台也不在一起。这次我选择把 Key 统一放到 TaoToken,Base URL 填成https://taotoken.net/api,同一把 Key 在工具调用循环里就能稳定切换模型。
1.1 传统 Benchmark 像温室,AGENTVISTA 把 Agent 扔进荒野
过去的评估体系其实分成两条线。一条是视觉感知类,比如 MMMU、MathVista,它们非常看重模型“看懂图片”的能力,但任务通常一步到位,不需要外部工具。另一条是 Agent 工具类,比如 GAIA、AgentBench,它们强调工具调用链的逻辑,但输入往往是纯文本或清洗过的简单图表,视觉信息不够复杂。这两条线都避开了同一个场景:现实世界的照片充满了噪点、遮挡和密集细节,而且 Agent 得同时具备“看图、检索、计算”三种能力。
AGENTVISTA 给出的定义叫“视觉驱动的长程混合工具使用”,英文是 Vision-centric Long-horizon Hybrid Tool Use。拿论文里那个地板装修案例来说,模型要在一张杂乱室内照片里识别地板纹理、门框位置,先调用 Image Search 找同款,再通过 Web Search 查规格和价格,最后用 Code Interpreter 计算面积和总费用。答案不是开放式生成,而是某个具体金额或型号,必须客观可验证。这种设计把“看错”直接放大成“算错”,任何一步出问题,后面所有搜索结果和计算结果都跟着错。
1.2 数据工程只留下一批“背不出答案”的难题
AGENTVISTA 的数据构建流程比一般 benchmark 严格得多。原始图片池有 300k+,经过四阶段过滤,最终只留下 209 个核心任务,覆盖科技、商业、地理、娱乐、社会、学术、文化 7 大类、25 个子领域。整个流水线大致是:先用 Claude-Opus-4 辅助筛选,把视觉信息足够丰富、需要 Agent 多步求解的图片挑出来;再由人工重写 Query,构建多步推理任务并确定金标答案;接着用 Gemini-3-Flash 试跑,并在执行过滤阶段用 Gemini-2.5-Pro 做无工具盲测;如果靠模型内部知识就能直接答对,这道题就会被丢掉。
这个“剔除可记忆题”的过程非常关键。它意味着 AGENTVISTA 测的不是模型记住了多少东西,而是模型拿到现场照片后,能不能通过工具调用把答案一步步算出来。对工程侧来说,这直接提高了 API 接入的稳定性要求:每道题都不同,Agent 必须在多轮调用里保持状态连续,如果某一步 Key 失效或换 Key 导致鉴权头不一致,前面裁剪出来的图片、搜索到的中间结果全部作废。
2. 为什么长程任务里视觉误识别占 40%
2.1 一步错,步步错
论文对错误案例做人工分析后,视觉误识别是最大错误源,在 Gemini-3-Pro 的错误里占了约 40%。模型会把 LaSalle Street Bridge 误认为 Chicago Bridge,或者把商品标签上的小字读错。听起来只是“看错一张图”,但在 AGENTVISTA 的任务结构里,视觉感知是后续所有动作的前提。Agent 一旦从图片里提取出错误的搜索关键词,之后 Web Search 搜到的页面、Image Search 比对的图片、Code Interpreter 算出来的金额,全都建立在错误前提上,这种多米诺骨牌效应会让整条工具链白跑。
另一个问题是模型不知道什么时候该“凑近看”。工具集里已经提供了 Code Interpreter,允许模型写 Python 代码裁剪图片、放大局部、再送去 OCR。但很多开源模型在图片模糊时会直接基于全图生成幻觉答案,而不是主动调用代码去看清楚细节。论文里提到,较优模型平均需要 13.85 轮工具交互才能完成一个任务,远超普通 benchmark 的 2-3 轮。轮数越多,模型注意力漂移和上下文信息丢失的风险就越大,API 连接的稳定性也从“一次性请求”变成了“长连接状态维护”。
2.2 主动感知是解决视觉误识别的关键路径
成功跑通 AGENTVISTA 的 Agent,通常具备一种“主动感知”能力。它们不会满足于看整张图,而是会先裁剪出感兴趣区域,放大、对比、搜索、再计算。这种能力要求模型有清晰的元认知:知道当前图片分辨率不足以支撑判断,也知道用什么工具来补充信息。对工程来说,这意味着模型后端必须支持多轮工具调用中的状态延续。如果模型在某一轮返回一个<tool_call>,框架执行完工具后还要把结果原样拼回消息,再发给模型继续推理。这个循环里的每一步都需要鉴权,而且通常不允许中途替换供应商。把多个模型接入统一到 TaoToken 之后,切换模型只需要改模型 ID,不需要改 Base URL 和 Key,ReAct 循环里那些拼装好的多模态历史消息可以直接继续发。
2.3 AGENTVISTA 的评测协议不关心 Key,但复现协议关心
AGENTVISTA 官方评估使用 GPT-4.1 作为 Judge,统一 System Prompt 强制模型进行思维链推理,并要求按 XML 格式输出<tool_call>动作,最终指标是准确率和平均工具调用轮数。协议本身不涉及 API Key,但复现协议的人要面对一个很实际的问题:你通常不会只测一个模型,而是要把 Gemini、Qwen-VL、Claude 等模型放进同一套评测脚本里跑对比。如果每个模型都有独立的 Key、独立的调用地址、独立的超时配置,脚本会变得很啰嗦。统一 API 通道的价值在这里就体现出来了:同一份脚本,只改 model 字段,其它鉴权信息保持不动,对比实验的变量就只剩模型本身。
3. 工具链设计:Web Search、Image Search、Code Interpreter 各管一段
3.1 四类工具的角色
AGENTVISTA 的标准化 Agent 环境是一套典型的 ReAct 风格工具集,覆盖感知、检索、计算三个环节。
| 工具 | 作用 | 关键参数 | 解决的痛点 |
|---|---|---|---|
| Web Search | 获取实时信息和规格参数 | query | 模型训练数据里没有的最新价格、参数、产地 |
| Image Search | 以图搜图 / 文本搜图 | image_url, query | 解决“这是什么东西,哪里有同款” |
| Visit Page | 浏览网页 | url | 深入阅读搜索结果里的详情页 |
| Code Interpreter | 执行 Python 代码 | code | 计算面积价格,也能用 PIL / OpenCV 裁剪图像 |
每类工具都不是孤立使用的。地板装修任务里,Image Search 先确定同款型号,Web Search 再查环保等级和每平米价格,Code Interpreter 最后把房间面积乘以单价。工具之间传递的是图片路径、文本片段和数值结果,模型每一轮都要消化这些中间状态并决定下一步动作。
3.2 Code Interpreter 的视觉增强:用代码“凑近看”
AGENTVISTA 给 Code Interpreter 加了一个很有启发性的用法——图像预处理。当模型觉得啤酒罐上的标签太小、运动鞋鞋标太模糊时,它可以直接生成一段 Python 代码来裁剪并放大局部区域。下面是一个简化示例,模拟模型在识别冰箱里啤酒 ABV 时的处理逻辑:
from PIL import Image # 输入是冰箱原图,先定位到右侧第二个罐子 img = Image.open("fridge_raw.jpg") # 裁剪出罐身标签区域:left, top, right, bottom crop_box = (900, 400, 1300, 700) roi = img.crop(crop_box) # 两倍放大,方便后续 OCR 或视觉模型再识别 roi = roi.resize((roi.width * 2, roi.height * 2), Image.LANCZOS) roi.save("beer_label_crop.png") print("cropped and saved beer_label_crop.png")这段代码本身不复杂,复杂的是模型得“想到”要去写这段代码。很多失败案例里,模型明明被提供了这个工具,却直接对着模糊原图硬猜。从模型能力角度看,这是元认知不足;从工程角度看,它意味着 Agent 需要在一个足够稳定的多模态上下文里持续推理,不能因为底层 API 切换而丢失中间图片路径。
3.3 工具调用循环里,鉴权统一是基础
ReAct 风格循环大概是这个样子:模型读入用户照片和系统提示,输出工具调用意图,框架执行对应工具,把工具结果追加到消息列表,再发给模型继续推理。这个循环可能在单任务里重复十几轮。每一轮模型调用都需要携带 API Key,而 AGENTVISTA 的对比实验又要求测多个模型。以前你得为 Gemini、Qwen-VL 分别准备 Key,并维护不同供应商的鉴权格式。现在把 Key 统一到 TaoToken,在工具调用循环里只需要固定一个 API Key,切换模型时改 model 字段即可。Base URL 统一填https://taotoken.net/api,不要加/v1后缀,也不要和官网链接混用。
4. 把自己的 Agent 接到 TaoToken:配置与验证
4.1 准备材料
开始配置前,我先打开 TaoToken 官网 注册并创建 API Key。这个动作替代了之前分别去 Gemini、Qwen 控制台申请 Key 的流程。然后我需要到模型广场确认要用的模型 ID,因为 AGENTVISTA 对比实验通常要跑多个模型,模型 ID 必须以模型广场当时列表为准,不能凭记忆写一个gpt-5或带日期后缀的名字。准备材料整理成表:
| 用途 | 地址 / 值 |
|---|---|
| 注册、创建 Key、看模型广场、看用量 | https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= |
| 填进 Agent 的 Base URL | https://taotoken.net/api |
| API Key | YOUR_API_KEY |
4.2 在自研 ReAct 循环里接入
如果你的 Agent 是自研的 Python 循环,只需要把模型后端的三个参数抽成常量:
MODEL_ID = "YOUR_MODEL_ID" # 从模型广场复制真实 ID BASE_URL = "https://taotoken.net/api" # Base URL 末尾不要加 /v1 API_KEY = "YOUR_API_KEY" # 从 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建接下来把这三个值传给你的模型客户端。不同 SDK 的初始化参数不一样,但底层都是把请求发到BASE_URL对应的服务端,并在请求头里带上Authorization: Bearer YOUR_API_KEY。模型 ID 则决定这次调用实际路由到哪一个模型。整份评测脚本里,你只需要维护这一组常量,不需要为每个模型单独写一套鉴权逻辑。
4.3 如果执行工具是 Claude Code
有些多模态 Agent 的编排层跑在 Claude Code 上,它可以通过环境变量指向统一 API 通道。在~/.claude/settings.json里写入:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY", "ANTHROPIC_MODEL": "YOUR_MODEL_ID" } }这里的 Base URL 同样是https://taotoken.net/api,末尾不要加/v1。Claude Code 会自己拼接请求路径。YOUR_API_KEY仍然来自 TaoToken 控制台。如果换成其它 Agent 框架,配置字段请以该框架的官方文档为准,但 Base URL 和 Key 的值不变。
4.4 验证调用:先跑一张带图消息
配置保存后,先用最简方式验证:拿一张 AGENTVISTA 风格的高清照片,让模型描述照片里的物体和文字。你可以在 TaoToken 模型对话 里用同一把 Key 发一条带图消息,确认模型 ID 和图片输入格式没问题。本地脚本也可以测,核心是确认三件事:Key 能通过鉴权、模型 ID 真实存在、图片 base64 或图片 URL 能被模型正确解析。验证通过后,再去 控制台 API Keys 看这次调用是否记录了用量。
5. 实验结果与错误分析:40% 视觉误识别意味着什么
5.1 SOTA 只有 27.3%,开源模型差距更大
AGENTVISTA 评估了 14 个顶尖模型,没有任何一个准确率超过 30%。最强的 Gemini-3-Pro 配全套工具也只有 27.3%,开源模型里 Qwen3-VL-235B 只拿到 12.92%。这组数字说明,现实世界里的多模态 Agent 任务还没有被真正解决。长程交互让问题更难:表现较好的模型平均需要 13.85 轮工具调用,每轮依赖前一轮的结果,错误累积非常明显。
5.2 错误以视觉误识别为主
人工分析错误案例后,视觉误识别是占比最高的错误类型,约 40%。工具调用失败约 19%,知识幻觉约 16%,指令误解约 14%,计算错误约 11%。视觉误识别之所以影响这么大,是因为它通常发生在任务链的第一步。模型一旦从图片里提取了错误信息,后面的工具调用再规范,也只能在错误前提上打转。这也解释了为什么 AGENTVISTA 要把 Code Interpreter 设计成可做图片裁剪的工具:对视觉细节不自信时,正确策略是主动放大再识别,而不是盲猜。
5.3 工具消融实验:不同模型依赖不同的工具
论文还做了工具消融。去掉外部工具后性能明显下降;只保留 Search 工具时,Gemini-3-Pro 的准确率是 26.32%,接近全套工具的 27.27%,说明它的视觉编码器很强,能部分替代显式图像处理。Claude-Sonnet-4.5 则更依赖视觉工具,给它去掉 Crop / Resize 能力后掉分明显。这个结果对工程配置很有指导意义:你的 Agent 需要根据实际模型决定是否在系统提示里强调“先裁剪再识别”。而切换模型时,工具列表可以保持不动,只需要通过 TaoToken 改 model 字段。
5.4 Test-Time Scaling:采样数量不等于准确率
论文尝试了 Best-of-N 策略。Random@16 表示从 16 次采样里随机选一个答案,准确率没有明显提升;Pass@16 表示只要 16 次里有一次对就算对,准确率可以升到 51.67%。这说明长程任务里,Reward Model 很难选出最优轨迹,真正缺的是模型生成高质量多步轨迹的能力。想在 AGENTVISTA 这类基准上提升成绩,不能靠反复采样撞答案,而要让模型每一步都走对。对 API 接入而言,这意味着多轮调用中每一轮都不能出现状态丢失或 Key 鉴权失败。
6. 案例复盘:运动鞋鉴定失败,啤酒 ABV 成功,差在主动裁剪
6.1 失败案例:Dior B30 运动鞋真假鉴定
任务要求判断一双 Dior B30 运动鞋是真品还是赝品,并给出依据。难处在细节极多:鞋舌字体、缝线针脚、内部标贴代码都非常小。模型先搜索了 “Dior B30 fake vs real”,但在对比图片时,它直接基于整体照片“目测”,没有调用 Code Interpreter 裁剪出鞋标局部。结果图片分辨率不足,模型开始幻觉,随意给出真伪判断。这个案例的问题并不在于模型不知道真假鉴定这个领域,而在于它没有在视觉信息不够时主动补充工具动作。
6.2 成功案例:德国啤酒酒精度比对
另一个任务是:在杂乱冰箱照片里找出酒精度最高的德国啤酒。Gemini-3-Pro 的做法很规范:先用 Code Interpreter 裁出每个啤酒罐的特写;再对裁剪图做本地识别品牌;接着用 Web Search 查每个品牌的产地和 ABV;然后过滤掉非德国品牌,比较 ABV 数值;最后给出唯一答案。这个链条里,视觉、检索、计算三个工具被反复交替使用,每一步都建立在更清晰的局部图上。
6.3 复现这类成功案例,工程上要注意什么
跑通这个案例需要模型连续做出多次正确的工具选择:用代码裁图、用搜索核实、用代码比较。在工程侧,每一步之间都要传递图片文件路径和文本结果,消息列表会越来越长。接入稳定 API 通道后,同一个 Key 可以支撑完整循环,中途不会因为切模型而中断上下文。如果你发现某个模型经常在“要不要裁图”上做错,可以换另一个视觉编码更强的模型继续跑同一套工具链,在 TaoToken 的统一通道下,这只是一个模型 ID 的替换,不涉及重新申请 Key。
7. 排障:模型 ID 对不上、Base URL 多加了 /v1
7.1 模型 ID 404:不要用来源不明的模型名
跑 AGENTVISTA 时最容易遇到的一个错是 404 或 “unknown model”。原因通常是从某篇教程里复制了一个不存在的模型 ID,比如带日期后缀或臆造的模型名。AGENTVISTA 评测脚本里填的模型 ID,必须以 TaoToken 模型广场 当时显示的名称为准。模型广场列表会随时更新,不能拿旧教程里的 ID 硬填。
7.2 Base URL 多加 /v1:变双份版本路径
很多 Agent 框架会自动在 Base URL 后面拼接/v1/chat/completions或/v1/messages。如果你在配置里写了https://taotoken.net/api/v1,实际请求可能变成/api/v1/v1/...,直接连接失败。正确做法是配置层只填https://taotoken.net/api,让框架自己处理版本路径。手动拼请求路径是另一回事,但配置文件里保持不带/v1最稳妥。
7.3 图片太大或 base64 超限
AGENTVISTA 的原始照片分辨率很高,如果直接把完整图片 base64 塞进多轮消息,很容易超出上下文或单次请求限制。遇到这种情况,先用 Code Interpreter 裁剪和压缩,再把局部图传给模型。这个操作同时也能缓解视觉误识别,相当于把模型注意力强制引导到关键区域。工具执行层报错时,先把 Python traceback 贴回对话让模型修正代码,而不是急着改 API 配置。
提示:排障时先分清错误发生在模型调用层还是工具执行层。模型调用层报 401、404、连接超时,检查 Key、模型 ID、Base URL;工具执行层报 NameError、FileNotFoundError、OCR 识别为空,则把 traceback 回传给模型,让它自己改代码。
8. 跑通之后:去控制台核对调用,再决定下一步
一轮完整 AGENTVISTA 任务会触发大量多模态请求和工具调用,跑完一个 case 后,我习惯先回控制台核对这次评测实际消耗了多少 token、调用了几次模型。打开 TaoToken 模型对话 可以快速复测单张图片,控制台 API Keys 可以创建或轮换 Key,用量统计页面则能看到本次长程任务的真实成本。如果打算持续跑多模型对比,可以看下 Coding Plan 是否更符合长期预算;用 Claude Code 做编排层的,再对照 Claude Code 接入文档 把环境变量检查一遍。
AGENTVISTA 的 27.3% 说明多模态 Agent 离“看懂现实世界”还很远。但作为开发者,至少不该让 Key 管理成为评测路上的绊脚石。统一接入之后,你省下的是维护多套鉴权的时间,省下的是工具调用循环中不必要的中断,然后才能把精力集中在真正难的问题上:让模型学会看不清时主动裁剪,搜不到时换关键词,算不对时重读代码。