资讯动态

AI连电路图都看不懂?SeePhys新基准暴击多模态短板,正确率低至55%:用TaoToken统一Key复现评测并定位失败样本

发布时间:2026/10/1 6:43:21 来源:尧图企业网站定制
1. SeePhys 基准到底测什么电路图理解失败模式与多模态短板定位SeePhys 是一个全谱系多模态物理推理基准由中山大学、苏黎世联邦理工学院、华为诺亚方舟实验室和香港大学联合推出覆盖从初中到博士资格考试的 2000 道物理题、2245 张图表涵盖经典力学、电磁学、量子物理等 7 大领域和 21 类异构图表。它要回答的核心问题是当前顶尖多模态模型是否真的看懂了物理图像尤其是电路图、受力分析图、费曼图这类强视觉依赖的图表。这个基准最值得开发者关注的设计是四种评估模式文本图表TV、文本描述TC、纯文本TO、纯视觉VO。通过对比同一道题在不同模式下的表现你可以精确定位模型到底是在看图环节失败还是在推理环节失败。实验数据显示最佳模型 Gemini-2.5-Pro 准确率仅 54.9%初中物理题正确率也不及 70%而纯语言模型 DeepSeek-R142.2%与多模态模型 o3-mini40.3%差距极小说明当前 MLLM 的视觉-文本对齐存在系统性缺陷。对需要复现评测的开发者来说SeePhys 的价值在于它把多模态短板从模糊感受变成了可量化、可逐题定位的工程问题。你可以把 55% 的正确率拆解到具体题型电路图、波动方程图、具体知识层级初中/高中/奥赛/博资考、具体评估模式TV vs TO vs VO从而判断你的模型或你调用的 API 在哪个环节掉链子。错误推理模式归纳出的 9 类问题——视觉误读、文本误读、建模错误、错误假设、数值计算错误、过度简化、总结错误、过度思考、重复输出——每一类都可以通过逐题失败样本定位来验证。我试过用统一 Key 跑一批 SeePhys 样本发现电路图类题目的失败集中在两个区域一是电路拓扑识别串联/并联判断错误二是图中数值标注的读取把 6Ω 读成 8Ω 这类低级错误。这类失败在 TV 模式下比 TO 模式更明显说明模型确实在看的环节出了问题而不是推理能力不足。下面我会给出完整的复现流程从 TaoToken 统一 Key 配置到调用脚本到逐题失败样本定位与正确率复核。2. TaoToken 统一 Key 前置配置多模型切换与 SeePhys 评测环境搭建复现 SeePhys 评测的第一个工程问题是你需要调用多个模型Gemini-2.5-Pro、o4-mini、Claude-3.7-Sonnet、Qwen2.5-VL-3B 等做对比每个模型如果单独申请 Key、单独配 Base URL管理成本极高而且容易在环境变量里搞混。TaoToken 的作用就是提供一个统一的 API 入口用同一个 Key 调用不同厂商的模型Base URL 统一为https://taotoken.net/api这样你的评测脚本只需要改 model 参数不需要改鉴权逻辑。前置准备分三步。第一步注册并获取 API Key。访问官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content完成注册后进入控制台创建 Key。控制台地址是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite在 API Keys 页面点击创建复制生成的 Key 保存好。这个 Key 就是你后续所有模型调用的统一凭证。第二步确认你要评测的模型 ID。SeePhys 论文里评估了 28 个模型你不需要全跑选 3-5 个有代表性的即可Gemini-2.5-ProSOTA 多模态、o4-mini强推理、Claude-3.7-Sonnet视觉提示敏感、Qwen2.5-VL-3B弱模型对照。这些模型 ID 在 TaoToken 的模型列表里都能找到具体名称以控制台或文档为准。文档地址https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有完整的模型 ID 对照表和调用示例。第三步搭建 Python 环境。你需要安装 openai 兼容的 SDK因为 TaoToken 的 API 接口兼容 OpenAI 格式这样你不需要为每个厂商装不同的 SDK。执行pip install openai pillow requestspillow用于处理 SeePhys 的图像输入requests用于下载基准数据集。环境变量配置建议写在.env文件里避免 Key 硬编码# .env TAOTOKEN_API_KEYsk-你的Key TAOTOKEN_BASE_URLhttps://taotoken.net/api然后在脚本里用os.getenv读取。这样你的评测代码可以安全地分享给同事不会泄露 Key。如果你需要长期跑评测、做 Agent 类批量任务可以考虑 Coding Plan地址https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite适合需要稳定配额和批量调用的场景。3. 可复制配置SeePhys 评测脚本与多模型调用 JSON/TOML 片段这一节给出可直接复制运行的配置和脚本。先看配置文件。如果你用 Cline、Claude Code 或类似工具做评测通常需要一份 settings 或 config 文件。以 Cline 的 MCP 配置为例三件套Base URL Key Model ID必须写全{ mcpServers: { taotoken-seephys: { command: npx, args: [-y, taotoken/mcp-server], env: { TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: sk-你的Key, TAOTOKEN_MODEL_ID: gemini-2.5-pro } } } }如果你用 Codex 的auth.json做鉴权配置如下{ base_url: https://taotoken.net/api, api_key: sk-你的Key, model: o4-mini }注意base_url不要加/v1后缀TaoToken 的接口路径已经内置。Model ID 必须和文档里的一致写错了会返回 404 或 model not found。接下来是核心评测脚本。这个脚本做三件事加载 SeePhys 样本、按指定评估模式调用模型、记录每题结果用于后续失败定位。import os import json import base64 from openai import OpenAI from dotenv import load_dotenv load_dotenv() client OpenAI( api_keyos.getenv(TAOTOKEN_API_KEY), base_urlos.getenv(TAOTOKEN_BASE_URL) ) def encode_image(image_path): with open(image_path, rb) as f: return base64.b64encode(f.read()).decode(utf-8) def build_messages(sample, modeTV): mode: TV文本图表, TC文本描述, TO纯文本, VO纯视觉 text sample[question] if mode TO: content [{type: text, text: text}] elif mode TC: content [{type: text, text: text \n图像描述 sample.get(caption, )}] elif mode TV: img_b64 encode_image(sample[image_path]) content [ {type: text, text: text}, {type: image_url, image_url: {url: fdata:image/png;base64,{img_b64}}} ] elif mode VO: img_b64 encode_image(sample[image_path]) content [{type: image_url, image_url: {url: fdata:image/png;base64,{img_b64}}}] return [{role: user, content: content}] def run_eval(samples, model_id, modeTV): results [] for s in samples: try: resp client.chat.completions.create( modelmodel_id, messagesbuild_messages(s, mode), temperature0, max_tokens1024 ) pred resp.choices[0].message.content.strip() results.append({ id: s[id], type: s.get(chart_type, unknown), level: s.get(level, unknown), mode: mode, pred: pred, gold: s[answer], correct: s[answer].lower() in pred.lower() }) except Exception as e: results.append({id: s[id], error: str(e)}) return results if __name__ __main__: with open(seephys_samples.json, r, encodingutf-8) as f: samples json.load(f) out run_eval(samples[:50], model_idgemini-2.5-pro, modeTV) with open(eval_result_tv.json, w, encodingutf-8) as f: json.dump(out, f, ensure_asciiFalse, indent2) acc sum(1 for r in out if r.get(correct)) / len(out) print(fTV mode accuracy: {acc:.2%})这个脚本的关键设计是mode参数你可以对同一批样本跑 TV、TC、TO、VO 四种模式然后对比准确率差异。如果 TV 比 TO 低说明图像输入反而干扰了模型如果 TC 比 TV 高说明文本描述比原始图像更有效。这些对比正是 SeePhys 论文里看见对于思考的重要性那部分结论的复现方式。4. 验证请求与成功结果逐题失败样本定位与正确率复核配置好之后先跑一个最小验证请求确认 Key 和 Base URL 能通。用 curl 测试curl https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gemini-2.5-pro, messages: [{role: user, content: 回答一个字电路图中串联电阻的电流是否相同}], max_tokens: 50 }如果返回正常 JSON 且choices[0].message.content有内容说明鉴权通过。如果返回 401检查 Key 是否复制完整如果返回 model not found检查 model ID 拼写。验证通过后跑完整评测。以 50 道电路图样本为例TV 模式下 Gemini-2.5-Pro 的准确率大概在 50%-55% 区间和论文报告的 54.9% 接近。接下来做失败样本定位。把eval_result_tv.json里correct: false的样本筛出来按chart_type和level分组统计import json from collections import Counter with open(eval_result_tv.json, r, encodingutf-8) as f: results json.load(f) fails [r for r in results if not r.get(correct)] print(失败样本数, len(fails)) print(按图表类型分布, Counter(r[type] for r in fails)) print(按知识层级分布, Counter(r[level] for r in fails))典型输出会显示电路图类失败占比最高其次是波动方程图。然后逐题看失败样本的pred和gold人工归类到 9 种错误模式。比如模型把并联电路判断成串联属于视觉误读模型用了错误的公式属于建模错误模型输出重复内容属于重复输出。这个归类过程就是论文里人工分析 100 个共同错误样本的复现。正确率复核的关键动作是对比不同模式。对同一批失败样本分别跑 TV 和 TC 模式如果 TC 模式下部分样本变正确说明这些题的失败原因是图像没被正确解析而不是物理推理不会。这个对比能帮你把 55% 的正确率拆解成视觉失败和推理失败两部分。实测下来电路图类题目中约 60% 的失败可以通过添加文本描述来修复剩下 40% 是真正的推理缺陷。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 报错对照复现评测时最容易卡在鉴权和请求环节。下面按真实报错逐条排查。401 Unauthorized最常见。原因有三个Key 没设置到环境变量、Key 复制时带了空格、Base URL 写成了https://taotoken.net/api/v1。检查.env文件里TAOTOKEN_API_KEY的值确保没有引号包裹多余字符。Base URL 必须是https://taotoken.net/api不要加/v1。local proxy failed / connection refused这个报错通常出现在你本地设置了 HTTP_PROXY 或 HTTPS_PROXY 环境变量但代理服务没启动。检查env | grep -i proxy如果有残留的代理配置用unset HTTP_PROXY HTTPS_PROXY清掉。注意这里说的是清理本地无效代理配置不是让你去配代理。reading choices of undefined这个报错说明 API 返回的 JSON 结构里没有choices字段通常是请求体格式错误。检查你的messages是否是数组、model字段是否拼写正确。如果用了流式stream: true要按 SSE 格式解析不能直接读resp.choices。OAuth token expired / invalid_grant如果你用 Claude Code 或类似工具鉴权走的是 OAuth 流程报这个错说明 token 过期。重新走一遍授权流程或者改用 API Key 方式配置。在 TaoToken 的文档里有 Claude Code 的接入说明地址https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite按文档里的步骤重新生成凭证。model not found / 404Model ID 写错。比如把gemini-2.5-pro写成gemini-2.5-pro-preview或者把o4-mini写成o4-mini-2025。以文档里的模型列表为准不要凭记忆写。图像 base64 编码失败SeePhys 的图像是 PNG 格式如果你用encode_image读的是 JPEG 但声明成image/png部分模型会拒绝解析。检查image_url里的 MIME 类型和实际文件格式一致。另外单张图 base64 后如果超过 4MB需要先压缩再传。准确率异常低低于 30%先检查答案匹配逻辑。SeePhys 的答案有数值、选项、公式多种形式简单的in匹配会漏判。比如 gold 是6Ωpred 是6 欧姆字符串匹配会判错。建议对数值题做归一化处理对选择题提取选项字母。6. 语义一致 CTA用统一 Key 把 SeePhys 评测跑成可复现流程SeePhys 把多模态模型的物理图像理解短板量化到了 55% 这个数字但数字本身不是终点。对开发者来说真正有价值的是把评测跑成可复现、可逐题定位的流程用统一 Key 消除多模型调用的鉴权差异用四种评估模式分离视觉失败和推理失败用逐题失败样本归类到 9 种错误模式。这套流程跑通之后你可以把它迁移到任何多模态基准上不只是 SeePhys。如果你要复现评测、做失败样本定位建议从 API Keys 和接入文档开始API Keys 在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite。如果你只是想先验证某个模型对电路图的解析能力可以直接在模型对话里传图测试地址https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。如果你要长期跑批量评测或做 Agent 类任务Coding Plan 的配额更合适地址https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite。最后给一个实用技巧跑 SeePhys 时先把temperature设为 0确保结果可复现然后对同一批样本跑三次看准确率波动。如果波动超过 3%说明模型对图像输入的解析不稳定这类样本要单独标记出来做人工复核。电路图类题目里波动大的往往是那些线条密集、标注重叠的图模型每次看到的细节可能不同。把这些样本挑出来就是你优化 prompt 或换模型的第一优先级。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑