协议 | 参数说明 | 详细参数与调用示例说明 |
OpenAI Chat Completions ( /v1/chat/completions) | 内容块 type=image_urlimage_url.url:支持公网 https://URL 或 Base64 data URLimage_url.detail:支持 auto、low、high、original | |
OpenAI Responses ( /v1/responses) | 内容块 type=input_imageimage_url:支持公网 https://URL 或 Base64 data URLdetail:支持 auto、low、high、original | |
Anthropic ( /v1/messages) | 内容块 type=imagesource.type:支持 url、base64source.url:公网 https://URLsource.media_type:image/jpeg、image/png、image/webp、image/gifsource.data:纯 Base64 编码,不带 data:前缀 |
image_url 的 url 字段;在 Responses 协议中,图片数据填入 input_image 的 image_url 字段。两种方式的核心差异如下:维度 | URL 方式 | Base64 方式 |
适用场景 | 图片已存储于公网可访问位置(如 COS、CDN) | 图片位于本地、内网,或由程序临时生成 |
请求体大小 | 极小(仅包含图片 URL) | 约为原文件大小的 1.33 倍 |
公网可达要求 | 必须公网可访问 | 无要求 |
传输耗时 | 较快(仅发送短 URL),但 TokenHub 需额外下载图片,受图片服务器响应速度影响 | 较慢(请求体约为原图片的 1.33 倍),但无需外部网络访问,适合内网/本地环境 |
{"type": "image_url","image_url": {"url": "https://example.com/photo.jpg"}}
{"type": "input_image","image_url": "https://example.com/photo.jpg"}
{"type": "image","source": {"type": "url","url": "https://example.com/photo.jpg"}}
data:<mime>;base64,<编码> 的形式填入 image_url.url。常见图片 MIME:image/jpeg、image/png、image/webp。{"type": "image_url","image_url": {"url": "data:image/jpeg;base64,<BASE64_DATA>"}}
{"type": "input_image","image_url": "data:image/jpeg;base64,<BASE64_DATA>"}
{"type": "image","source": {"type": "base64","media_type": "image/jpeg","data": "<BASE64_DATA>"}}
POST /v1/chat/completions),以 hy4 模型为例。图片通过 content 中的 image_url 类型块传入,支持单图与多图两种输入。curl -X POST 'https://tokenhub-intl.tencentcloudmaas.com/v1/chat/completions' \\-H 'Authorization: Bearer YOUR_API_KEY' \\-H 'Content-Type: application/json' \\-d '{"model": "hy4","messages": [{"role": "user", "content": [{"type": "image_url", "image_url": {"url": "YOUR_IMAGE_URL"}},{"type": "text", "text": "请描述这张图片的内容,并说出图中有几只动物。"}]}],"stream": false}'
from openai import OpenAIclient = OpenAI(api_key="YOUR_API_KEY",base_url="https://tokenhub-intl.tencentcloudmaas.com/v1",)response = client.chat.completions.create(model="hy4",messages=[{"role": "user","content": [{"type": "image_url", "image_url": {"url": "YOUR_IMAGE_URL"}},{"type": "text", "text": "请描述这张图片的内容,并说出图中有几只动物。"},],}],)print(response.choices[0].message.content)
import base64from openai import OpenAIclient = OpenAI(api_key="YOUR_API_KEY",base_url="https://tokenhub-intl.tencentcloudmaas.com/v1",)# 请将 example.jpg 替换为您本地图片的路径with open("example.jpg", "rb") as f:base64_image = base64.b64encode(f.read()).decode("utf-8")response = client.chat.completions.create(model="hy4",messages=[{"role": "user","content": [{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}},{"type": "text", "text": "请描述这张图片的内容,并说出图中有几只动物。"},],}],)print(response.choices[0].message.content)
{"id": "REPLACED_ID","object": "chat.completion","model": "hy4","created": 1787628534,"choices": [{"index": 0,"message": {"role": "assistant","content": "这张图片中有三只橘色的小猫,趴在窗台上晒太阳,背景是晴朗的天空。"},"finish_reason": "stop"}],"usage": {"prompt_tokens": 1158,"completion_tokens": 36,"total_tokens": 1194}}
content 数组中并列多个 image_url 块即可实现多图输入。最大输入图片数量受上下文窗口约束,无硬性张数上限。curl -X POST 'https://tokenhub-intl.tencentcloudmaas.com/v1/chat/completions' \\-H 'Authorization: Bearer YOUR_API_KEY' \\-H 'Content-Type: application/json' \\-d '{"model": "hy4","messages": [{"role": "user", "content": [{"type": "image_url", "image_url": {"url": "YOUR_IMAGE_URL"}},{"type": "image_url", "image_url": {"url": "YOUR_IMAGE_URL_2"}},{"type": "text", "text": "请分别描述这两张图片的内容"}]}],"stream": false}'
from openai import OpenAIclient = OpenAI(api_key="YOUR_API_KEY",base_url="https://tokenhub-intl.tencentcloudmaas.com/v1",)response = client.chat.completions.create(model="hy4",messages=[{"role": "user","content": [{"type": "image_url", "image_url": {"url": "YOUR_IMAGE_URL"}},{"type": "image_url", "image_url": {"url": "YOUR_IMAGE_URL_2"}},{"type": "text", "text": "请分别描述这两张图片的内容"},],}],)print(response.choices[0].message.content)
import base64from openai import OpenAIclient = OpenAI(api_key="YOUR_API_KEY",base_url="https://tokenhub-intl.tencentcloudmaas.com/v1",)def load_b64(path):# 请将路径替换为您本地图片with open(path, "rb") as f:return base64.b64encode(f.read()).decode("utf-8")# 请将 example_a.jpg / example_b.jpg 替换为您本地图片的路径image_a = load_b64("example_a.jpg")image_b = load_b64("example_b.jpg")response = client.chat.completions.create(model="hy4",messages=[{"role": "user","content": [{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_a}"}},{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_b}"}},{"type": "text", "text": "请分别描述这两张图片的内容"},],}],)print(response.choices[0].message.content)
{"id": "REPLACED_ID","object": "chat.completion","model": "hy4","created": 1787628932,"choices": [{"index": 0,"message": {"role": "assistant","content": "### 第一张图片\\n- 颜色:这张图片由两种纯色组成,上半部分是蓝色(饱和度和亮度较高的正蓝色或艳蓝色),下半部分是红色(饱和度和亮度较高的正红色或艳红色)。\\n- 构图:采用了水平二分构图(上下分割),整个画面被一条水平直线(大致在图像垂直方向的中点位置)分成上下两个相等的矩形区域,上方区域填充蓝色,下方区域填充红色,两种颜色区域的面积大致相等,视觉上呈现出简洁的上下分色效果。\\n\\n\\n### 第二张图片\\n- 颜色:这张图片同样由两种纯色组成,左半部分是绿色(饱和度较高的鲜绿色或草绿色),右半部分是黄色(饱和度较高的亮黄色或柠檬黄)。\\n- 构图:采用了垂直二分构图(左右分割),整个画面被一条垂直直线(大致在图像水平方向的中点位置)分成左右两个相等的矩形区域,左侧区域填充绿色,右侧区域填充黄色,两种颜色区域的面积大致相等,视觉上呈现出简洁的左右分色效果。\\n"},"finish_reason": "stop"}],"usage": {"prompt_tokens": 569,"completion_tokens": 231,"total_tokens": 800}}
pip install openai。content 数组中 text 与 image_url 的顺序即为模型接收的顺序。16000 ÷ 1058 ≈ 15 张16000 ÷ 602 ≈ 26 张传入方式 | 单张图片大小建议 | 请求体大小限制 |
URL 方式 | 建议不超过 10 MB | 不超过 100 MB |
Base64 方式 | 建议不超过 10 MB | 不超过 100 MB(Base64 编码会使数据体积膨胀约 1.33 倍,多图场景需注意累加) |
文档反馈