tokrouterdocs
使用指南

视觉输入

图片以 URL 或 data URL(base64)传入的两种写法,以及体积与格式约束。

多模态模型接受图片输入。OpenAI 协议里图片是一个 image_url 内容块:

传公网 URL

resp = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "这张图里有什么?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}},
        ],
    }],
)

传 base64(data URL)

import base64, pathlib

data = base64.b64encode(pathlib.Path("cat.jpg").read_bytes()).decode()
resp = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "描述这张图"},
            {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{data}"}},
        ],
    }],
)

注意事项

  • 格式:image/jpeg、image/png、image/webp 最稳妥;SVG 通常不被接受
  • 体积:base64 会让请求体膨胀约 1/3。大图先缩放到长边 1024–2048px
  • URL 可达性:上游厂商需要能访问你给的 URL,内网地址和预签名过期链接会失败
  • 模型能力:不是所有模型都支持图片输入,不支持的模型会返回明确错误而不是忽略图片

Anthropic / Gemini 协议的图片形态

用 Anthropic 协议时图片是 {"type":"image","source":{"type":"base64",...}};用 Gemini 协议时是 inline_data / file_data。网关按入站协议解释,再映射到目标厂商 —— 见协议互转。