ARTICLE DETAIL

资讯详情

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

GPT-4V、Gemini、GLM-4V 多模态选型,Base URL 改到 TaoToken 再跑示例

GPT-4V、Gemini、GLM-4V 多模态选型,Base URL 改到 TaoToken 再跑示例 多模态选型绕不开 GPT-4V、Gemini、GLM-4V、Qwen-VL也绕不开 VQAv2、GQA、MMMU 这些基准。你用 TaoToken 统一凭证后打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建一把 Key把 Base URL 填 https://taotoken.net/api就能在同一套 OpenAI 兼容客户端里横向跑示例。原文的能力矩阵、基准表格、融合策略都不动TaoToken 只负责把四家控制台的 Key 和地址收成一条通道不替任何模型做图文理解或视频帧分析。很多人的卡点不在选型而在准备阶段OpenAI 要 api_keyGemini 要 genai.configure(api_key...)智谱要 ZhipuAI(api_key...)阿里那边又是 OpenAI(base_url...)。四份凭证、四个地址、四段示例代码想跑一张图做对比光切环境就够折腾。把凭证统一到一把 Key 之后你才有精力回到模型能力本身。1. 多模态能力矩阵与 VQAv2/GQA/MMMU 基准先别动1.1 原文的选型逻辑仍然有效原文用能力矩阵把 GPT-4V、Gemini、GLM-4V、Qwen-VL 放在一起看再用 VQAv2、GQA、MMMU 这类基准判断图文理解、视觉问答、多学科推理的差异。这部分是模型层面的判断跟你怎么拿 Key、走哪个 Base URL 没关系。统一通道不会参与打分也不会改变某个模型在图表里的位置。你换成一把 Key 之后仍然要按原文的方法先看任务类型再对照基准最后才看接入成本。1.2 四套凭证才是跑通示例的拦路虎原文 2.1 的 openai 调用、2.2 的 genai.configure(api_key...)、2.3.1 的 ZhipuAI(api_key...)、2.3.2 的 OpenAI(base_url...) 看起来只是四段代码实际背后是四个控制台。OpenAI 的 Key 在 OpenAI 后台Gemini 的 Key 在 Google AI Studio智谱的 Key 在智谱开放平台Qwen-VL 的 Key 在阿里云百炼。每换一个模型你都要重新找 Key、复制 Base URL、改环境变量。横向跑通一次代码没写几行配置倒先乱了。更实际的做法是先把凭证收口打开 TaoToken 注册并创建 API Key后面四家的示例都改用这把 Key。2. 在 TaoToken 控制台创建 Key 与确认模型广场里的模型 ID2.1 注册、创建 API Key、复制占位符登录 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 之后进控制台创建 API Key。Key 只显示一次复制后放到环境变量或本地配置文件里本文统一写成 YOUR_API_KEY。不要把它硬编码到要提交的脚本里也不要把 Key 和官网地址混在一起。你需要记两件事官网落地页 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 用来注册、创建 Key、看模型广场和查用量填进代码的 Base URL 是 https://taotoken.net/api。这两件事分开之后后面改模型、换语言、加对比脚本都不会再乱。2.2 Base URL 填 https://taotoken.net/api末尾不要加 /v1很多 OpenAI 兼容客户端默认会在 base_url 后面自动补 /chat/completions如果你把 Base URL 写成 https://taotoken.net/api/v1就可能出现路径拼接重复轻则 404重则回到错误的端点。本文所有示例统一写base_url https://taotoken.net/api模型 ID 不要自己猜。原文里的 gpt-4-vision-preview、gemini-pro-vision、glm-4v-plus、qwen-vl-plus 是示例名实际可用列表以 TaoToken 模型广场当时展示为准。你在控制台看到哪个能选就填哪个。如果模型名带日期后缀或版本号也照控制台复制不要自己拼。3. GPT-4V 的 openai 调用只改 base_url 和 api_key3.1 安装 SDK 与最小图文问答原文 2.1 用 openai 调用 GPT-4V现在把 api_key 换成 YOUR_API_KEYbase_url 换成 https://taotoken.net/api其余消息结构不变。先装 SDKpip install openai然后写一个最小图文问答from openai import OpenAI import base64 client OpenAI( api_keyYOUR_API_KEY, # 从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 创建 base_urlhttps://taotoken.net/api, ) def to_data_url(path: str) - str: with open(path, rb) as f: raw f.read() b64 base64.b64encode(raw).decode(utf-8) return fdata:image/jpeg;base64,{b64} resp client.chat.completions.create( modelgpt-4-vision-preview, # 以模型广场当时列表为准 messages[ { role: user, content: [ {type: text, text: 用一句话描述这张图里的主要内容。}, {type: image_url, image_url: {url: to_data_url(demo.jpg)}}, ], } ], max_tokens200, ) print(resp.choices[0].message.content)3.2 模型名以控制台为准不要自己拼日期后缀这段代码跟原文结构一致区别只在凭证来源。你可能会想换成更具体的模型版本比如带日期或 preview 后缀的名称。可以但前提是模型广场里确实有。统一通道只提供调用路径不替你判断 GPT-4V 能不能识别某张图识别效果仍然由模型本身决定。跑通之后把返回内容、耗时和报错记下来再换下一个模型。4. Gemini 的 genai.configure 换成兼容通道怎么写4.1 原生 SDK 与 OpenAI 兼容协议的选择原文 2.2 用 genai.configure(api_key...) 初始化 Gemini。如果你继续用 Google 原生 SDK它通常不接受自定义 base_url想走统一通道就要改用 OpenAI 兼容协议。这里不是让 Gemini 做别的事只是把请求形态换成同一套客户端。模型名仍然用原文示例里的 gemini-pro-vision实际是否可用、是否有新版本以 TaoToken 模型广场为准。4.2 gemini-pro-vision 的图文请求示例把 Gemini 的调用改写成下面这样注意 Base URL 依旧是 https://taotoken.net/apifrom openai import OpenAI import base64 client OpenAI( api_keyYOUR_API_KEY, base_urlhttps://taotoken.net/api, ) def to_data_url(path: str) - str: with open(path, rb) as f: b64 base64.b64encode(f.read()).decode(utf-8) return fdata:image/png;base64,{b64} resp client.chat.completions.create( modelgemini-pro-vision, # 以模型广场当时列表为准 messages[ { role: user, content: [ {type: text, text: 这张流程图里有几个判断分支}, {type: image_url, image_url: {url: to_data_url(flow.png)}}, ], } ], max_tokens300, ) print(resp.choices[0].message.content)跑这段之前先确认一件事图片格式和前缀匹配。PNG 就用 image/pngJPEG 就用 image/jpeg不要混。Gemini 的视频帧分析属于模型能力统一通道不会替它做帧抽取你需要自己先用本地工具抽帧再把单帧图片传进请求。5. GLM-4V 与 Qwen-VL把智谱和阿里的示例统一到同一个 base_url5.1 glm-4v-plus 的调用改写原文 2.3.1 用 ZhipuAI(api_key...) 调 glm-4v-plus。现在同样改成 OpenAI 兼容客户端Key 还是 YOUR_API_KEYBase URL 还是 https://taotoken.net/api。请求体里的 content 数组写法与前面一致from openai import OpenAI import base64 client OpenAI( api_keyYOUR_API_KEY, base_urlhttps://taotoken.net/api, ) def to_data_url(path: str) - str: with open(path, rb) as f: b64 base64.b64encode(f.read()).decode(utf-8) return fdata:image/jpeg;base64,{b64} resp client.chat.completions.create( modelglm-4v-plus, # 以模型广场当时列表为准 messages[ { role: user, content: [ {type: text, text: 这张票据上的总金额是多少}, {type: image_url, image_url: {url: to_data_url(receipt.jpg)}}, ], } ], ) print(resp.choices[0].message.content)5.2 qwen-vl-plus 的调用改写原文 2.3.2 用的是 OpenAI(base_url...) 指向阿里云百炼的兼容地址。改动最小把 base_url 换成 https://taotoken.net/apiapi_key 换成 YOUR_API_KEY模型名保留 qwen-vl-plus或者按模型广场换成当时可用的名称。from openai import OpenAI import base64 client OpenAI( api_keyYOUR_API_KEY, base_urlhttps://taotoken.net/api, ) def to_data_url(path: str) - str: with open(path, rb) as f: b64 base64.b64encode(f.read()).decode(utf-8) return fdata:image/bmp;base64,{b64} resp client.chat.completions.create( modelqwen-vl-plus, # 以模型广场当时列表为准 messages[ { role: user, content: [ {type: text, text: 这张电路图里标注了哪些元件}, {type: image_url, image_url: {url: to_data_url(circuit.bmp)}}, ], } ], ) print(resp.choices[0].message.content)到这里四家示例都只共用一把 Key 和一个 Base URL。原文里四个控制台、四份凭证的切换成本被压成了一次创建 Key 的动作。注意统一通道只负责转发请求不替 GLM-4V 或 Qwen-VL 提升识别率识别准不准仍然看模型和你给的图片质量。6. 同一把 Key 横向跑四家批量脚本与对比表复现6.1 用循环跑一张图记录返回与耗时既然凭证统一了就可以把四家模型放进同一个脚本对同一张图发同样的问题。下面这段不是让你直接拿结果去替代 VQAv2、GQA、MMMU而是帮你确认哪几个模型在当前通道里可用、响应是否正常、耗时大致什么水平。import time from openai import OpenAI import base64 client OpenAI( api_keyYOUR_API_KEY, base_urlhttps://taotoken.net/api, ) def to_data_url(path: str) - str: with open(path, rb) as f: b64 base64.b64encode(f.read()).decode(utf-8) return fdata:image/jpeg;base64,{b64} question 这张图里有哪些主要对象它们之间是什么关系 image_url to_data_url(demo.jpg) models [ gpt-4-vision-preview, gemini-pro-vision, glm-4v-plus, qwen-vl-plus, ] for model in models: start time.time() try: resp client.chat.completions.create( modelmodel, messages[ { role: user, content: [ {type: text, text: question}, {type: image_url, image_url: {url: image_url}}, ], } ], max_tokens300, ) cost time.time() - start print(f[{model}] {cost:.2f}s) print(resp.choices[0].message.content) except Exception as e: cost time.time() - start print(f[{model}] {cost:.2f}s ERROR: {e}) print(- * 40)6.2 把结果填回 VQAv2/GQA/MMMU 的选型表跑完一轮你手里会有四段回答、四个耗时和可能的报错。这些数据适合判断接入是否顺畅、模型名是否正确但不能替代原文引用的 VQAv2、GQA、MMMU 分数。基准分数是模型能力层面的统计结果你单张图的问答只是 smoke test。正确做法是先用统一通道把四家都跑通确认凭证和 Base URL 没问题然后回到原文的能力矩阵和基准表格按你的业务场景做取舍。统一通道不改变这些取舍。7. 401、404 与图片格式多模态接入常见报错对照7.1 Key 与 Base URL 的三种典型错法统一通道之后报错反而更集中。最常见的是 401api_key 填错、复制时带了空格、或者 Key 已经删除。第二类是 404Base URL 写成了 https://taotoken.net/api/v1或者模型名不在模型广场里。第三类是 400图片编码前缀和实际格式不一致比如把 PNG 写成 image/jpeg。对照表如下现象可能原因检查动作401 UnauthorizedKey 为空、错误或已失效用 YOUR_API_KEY 占位符重新复制确认没有空格404 Not FoundBase URL 多了 /v1或模型 ID 不存在Base URL 只写 https://taotoken.net/api模型名去模型广场核对400 Bad Requestdata URL 前缀与图片格式不匹配PNG 用 image/pngJPEG 用 image/jpegBMP 用 image/bmp413 或超时图片太大、base64 后请求体过长先压缩图片再重新编码7.2 图片编码与模型名大小写多模态请求容易忽略的是图片编码。你要先读二进制、再 base64、最后拼 data URL 前缀。前缀写错模型可能直接拒收。另一个容易忽略的是模型名大小写gpt-4-vision-preview 和 GPT-4V 不是同一个写法实际请求里以模型广场展示的 ID 为准。如果某一家始终报错先把它单独摘出来用同一把 Key 在模型对话里发一张小图测试模型对话能通说明 Key 和通道没问题再回到脚本查消息体和图片编码。8. 跑通之后去模型对话和 Coding Plan 对一下这次调用8.1 用同一把 Key 在模型对话里测一条配置保存后先别急着扩展到四家批量对比。打开 TaoToken 模型对话用同一把 Key 发一张测试图确认模型 ID 和 Base URL 没填错。对话里能返回内容说明你的 Key 和通道是通的如果对话里也报错就回到上一节的 401/404 对照表先排凭证和模型名不要继续改脚本。8.2 长期跑横向对比看 Coding PlanKey 在控制台创建如果你准备长期把 GPT-4V、Gemini、GLM-4V、Qwen-VL 放在同一套脚本里跑对比打开 Coding Plan 看套餐是否够用。Key 不够或需要分项目时在 控制台 API Keys 新建。调用记录和用量仍然在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台查看跑完四家对比后去对一下这次多模态请求有没有记上账再决定下一步是换模型还是调提示词。
返回列表