
1. 空间智能评测为什么值得单独跑一遍多模态大模型这两年卷得厉害知识问答、写代码、做图表都不在话下但一碰到“从俯视图判断积木结构”“站在相机视角判断左右”这类空间推理题很多模型就开始露怯。商汤这次开源 SenseNova-SI 系列2B 和 8B 两个规格在 VSI、MMSI、MindCube、ViewSpatial 四个基准上平均分做到 60.99把同量级的 Qwen3-VL-8B40.16、BAGEL-7B35.01甩开一截甚至在部分空间任务上超过了 GPT-549.68和 Gemini-2.5-Pro48.81。这个结果对做具身智能、自动驾驶、机器人方向的人很有吸引力因为空间理解一直是多模态模型走向物理世界的卡点。但“看榜单”和“自己跑通”是两回事。你真正需要的是拿一个统一 Key把 SenseNova-SI 的评测脚本跑起来喂一张空间推理图拿到模型返回的选项再和标准答案对一遍。这篇就按这个目标来从 TaoToken 的 Key 配置讲到多模态调用脚本最后用一个空间推理样例验证整条链路。适合已经会写 Python、想快速复现多模态评测的开发者也适合想对比开源模型和闭源模型空间能力的同学。2. TaoToken 前置统一 Key 与多模态接入准备TaoToken 在这里的角色是“统一入口”。你不需要为每个模型单独申请账号、单独记 endpoint而是用同一个 Key 走兼容接口切换模型时只改模型名。对做评测的人来说这点很省事同一份脚本改一行model字段就能从 SenseNova-SI 换到别的多模态模型做对照。先做三件事。第一拿到 Key。登录官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 进控制台创建 API Key地址是 https://taotoken.net/console 。第二确认你要调的模型标识。SenseNova-SI 系列在开源仓库里是SenseNova-SI-8B和SenseNova-SI-2B接入时以平台模型列表为准可以在模型对话页 https://taotoken.net/models 先手动试一次。第三记下 API 根地址https://taotoken.net/api 注意这个地址不带 UTM 参数脚本里直接用。注意Key 只放在环境变量或本地配置文件里不要写进会提交到 Git 的脚本。评测脚本经常要分享硬编码 Key 是最常见的泄露方式。如果你后面要长期跑批量评测、接 Agent 做自动化可以看 Coding Plan https://taotoken.net/coding-plan 它更适合高频调用场景只是偶尔验证一次模型用按量 Key 就够了。3. 可复制配置settings.json 与 config.toml 骨架不同工具读不同格式的配置。下面给两份骨架你按自己用的客户端选一份。核心字段就三个base_url、api_key、model。先看settings.json适合 VS Code 插件、部分 CLI 工具和自写脚本读取{ provider: taotoken, base_url: https://taotoken.net/api, api_key: sk-你的Key, model: SenseNova-SI-8B, timeout: 120, max_tokens: 1024, temperature: 0.2 }再看config.toml适合一些 Python 工具链和本地评测框架[provider] name taotoken base_url https://taotoken.net/api api_key sk-你的Key [model] name SenseNova-SI-8B timeout 120 max_tokens 1024 temperature 0.2 [eval] image_dir ./samples answer_file ./answers.jsonl参数说明用表格对照一下避免你改错字段作用建议值base_url接口根地址https://taotoken.net/apiapi_key身份凭证控制台创建勿外泄model模型标识SenseNova-SI-8B / SenseNova-SI-2Btemperature采样随机性评测用 0.1–0.3max_tokens最大输出空间选择题 512 足够timeout超时秒数图片大时给 120配置里把temperature压低是有原因的空间推理题答案通常是 A/B/C/D随机性越高越容易在边界样例上抖动评测复现时不稳定。0.2 左右既能保证输出格式稳定又不会让模型过于死板。4. 多模态评测调用脚本喂图、提问、取答案配置好了就写调用脚本。下面这段用 OpenAI 兼容的 Python SDK 风格把图片转成 base64 后随消息一起发。你只需要把IMAGE_PATH换成自己的空间推理图。import base64 import json import os from openai import OpenAI client OpenAI( base_urlhttps://taotoken.net/api, api_keyos.environ[TAOTOKEN_API_KEY], ) def encode_image(path): with open(path, rb) as f: return base64.b64encode(f.read()).decode(utf-8) def ask_spatial(image_path, question): b64 encode_image(image_path) resp client.chat.completions.create( modelSenseNova-SI-8B, temperature0.2, max_tokens512, messages[ { role: user, content: [ {type: text, text: question}, { type: image_url, image_url: { url: fdata:image/png;base64,{b64} }, }, ], } ], ) return resp.choices[0].message.content if __name__ __main__: q ( 这是一道空间推理题。图中给出一个立方体组合图形 请从四个俯视图选项中选出正确的一个。 只回答选项字母格式为答案X ) out ask_spatial(./samples/cube_topview.png, q) print(out)脚本里有两个细节值得说。第一提问模板强制模型输出“答案X”这样你后面可以用正则直接抽选项不用再让另一个模型去解析。第二图片走 base64 内联避免本地文件路径在服务端不可达的问题。如果你要批量跑把ask_spatial放进循环读answers.jsonl里的题目和标准答案逐条比对即可。批量评测时建议加一层重试和日志import time def ask_with_retry(image_path, question, retries3): for i in range(retries): try: return ask_spatial(image_path, question) except Exception as e: print(f第{i1}次失败: {e}) time.sleep(2) return 答案ERROR这样单条网络抖动不会让整批评测中断最后统计准确率时把 ERROR 单独计数就行。5. 验证请求跑通一次空间推理样例并核对结果现在做最关键的一步跑通一次核对返回。我用的样例是一道俯视图选择题图里有几个立方体堆叠要求选正确俯视图。标准答案是 B。执行脚本后终端输出类似答案B拿到这个结果先别急着高兴要做三件核对。第一确认返回里确实只有选项字母没有多余解释否则你的正则抽取会失败。第二把同一张图再跑一次看答案是否稳定在 B如果两次不一样说明 temperature 还是偏高或者图片分辨率不够。第三换一张你知道答案的图比如“站在相机位置判断摩托车在左还是右”标准答案是右侧看模型是否给出对应选项。核对时可以写个小函数自动比对import re def extract_choice(text): m re.search(r答案([A-D]), text) return m.group(1) if m else None pred extract_choice(out) gold B print(预测:, pred, 标准:, gold, 是否正确:, pred gold)如果预测和标准一致说明从 Key 配置、图片编码、请求发送到答案抽取整条链路是通的。这时候你再把model改成SenseNova-SI-2B跑一遍对比两个规格在同一题上的表现就能直观感受到 8B 和 2B 在空间推理上的差距。实测下来8B 在视角转换和空间关系题上更稳2B 在简单俯视图上也能对但复杂形变题容易错。6. 本篇常见错排查跑不通的时候按下面顺序查基本能覆盖九成问题。报 401 或鉴权失败先确认api_key有没有多余空格再确认base_url是不是写成了带 UTM 的地址。脚本里必须用 https://taotoken.net/api 不要拼后面的推广参数。如果 Key 是在控制台刚建的等几秒再试偶尔有同步延迟。报模型不存在模型名大小写敏感SenseNova-SI-8B不要写成sensenova-si-8b。不确定就去模型对话页手动选一次看平台实际暴露的标识是什么以那里为准。图片传了但模型说看不到检查 base64 前缀是不是data:image/png;base64,JPEG 图要改成data:image/jpeg;base64,。另外图片别太大超过几 MB 时先压缩否则请求可能超时。返回一堆解释而不是选项说明提问模板没压住。把“只回答选项字母格式为答案X”放到问题最后并降低 temperature。如果还不行在系统消息里再强调一次输出格式。批量评测准确率异常低先抽查几条原始返回看是不是抽取正则没匹配上把正确结果误判成错误。很多时候不是模型不行是解析逻辑把“答案B。”这种带句号的输出漏掉了正则改成答案([A-D])不带结尾锚点即可。超时把 timeout 调到 120 以上或者把图片先缩到 1024 宽再传。空间推理题对分辨率有要求但没必要传原图。排障时如果怀疑是 Key 或接入方式的问题直接去接入文档 https://taotoken.net/doc 对照一遍请求示例比反复猜快得多。7. 继续跑下去从单题验证到批量对比单题跑通只是起点。你真正要做的是把 SenseNova-SI 和 GPT-5 放在同一套题上对比。做法很简单准备一个answers.jsonl每行一条{image: ..., question: ..., gold: B}然后循环调用把model字段作为变量分别跑SenseNova-SI-8B和你要对比的闭源模型最后统计各自准确率。这样得到的数字是你自己环境下的比只看榜单更有说服力。如果你要长期做这类评测建议把 Key 管理、模型切换、结果落盘做成一个小工具Coding Plan https://taotoken.net/coding-plan 在这种高频场景下更合适。想先手动感受模型能力就去模型对话 https://taotoken.net/models 传图试几道要新建或轮换 Key在 API Keys 页面 https://taotoken.net/api-keys 操作。整条链路跑顺之后你会发现空间智能评测没那么玄核心就是把配置、脚本、核对三步做扎实。