跳到主要内容

多模态输入 / Multimodal Input

让模型接收图像、视频、音频、文件作为输入,一次请求完成"看 + 听 + 答"。图灵平台用 OpenAI 兼容的 content 数组结构把图像、视频、音频统一进 /chat/completions 调用;文件输入是例外,需走 Responses 协议的 input_file(见文件输入)。

何时使用

  • 截图 QA、文档 OCR、图片分类、UI 操作分析
  • 视频摘要、章节拆分、多帧理解
  • 音频转文字 + 立刻回答(语音助手)
  • 传入 PDF / Word / 图像批量抽取数据

与独立生成端点的区别

  • 需要模型输出图像图像生成
  • 需要纯转录(输入音频,输出文本) → STT
  • 需要实时语音对话Realtime

统一的 content 数组结构

所有多模态输入都以 user / assistant message 的 content: [...] 数组形式传入。每个元素是一个 content block,由 type 区分类型:

type携带字段用途
texttext: string普通文字
image_urlimage_url: { url, detail? }图片(URL 或 base64 data URI)
image_url(带 mime_type,data URI)image_url: { url: "data:video/mp4;base64,…", mime_type }视频(Gemini 2.5+/3.x)
image_url(多帧序列)多个 image_url block视频帧(Qwen Omni)
video_urlvideo_url: { url }视频(Qwen VL、Doubao Seed 2.0;URL 或 base64 data URI)
input_audioinput_audio: { data, format }音频(base64,格式:wav/mp3/flac/opus/pcm16)
input_file(仅 Responses 协议)input_file: { filename, file_data }文件 Base64 内联(PDF 等),详见文件输入

图像输入

方式 A:HTTPS URL

from openai import OpenAI

client = OpenAI(
api_key="your-api-key",
base_url="https://live-turing.cn.llm.tcljd.com/api/v1",
)

response = client.chat.completions.create(
model="turing/gpt-5.4-mini",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图里有什么?"},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/photo.jpg",
"detail": "low" # 或 "high" / "auto"
}
}
]
}]
)
URL 可达性

图像链接需对海外服务器可访问(大部分模型推理侧在海外)。国内地址可能 DNS 解析失败或超时。生产建议走 base64。

Google/Gemini URL 输入限制

使用 Google/Gemini 模型通过 HTTPS URL 输入多媒体文件时,URL 指向的公网文件必须 < 15 MB。超过 15 MB 请先压缩、裁剪,或改用平台支持的 base64 内嵌方式。

Google Gemini URL 输入文件大小限制

方式 B:base64 data URI

import base64

with open("photo.jpg", "rb") as f:
b64 = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
model="turing/gpt-5.4-mini",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "这张图里有什么?"},
{
"type": "image_url",
"image_url": {"url": f"data:image/jpeg;base64,{b64}"}
}
]
}]
)

detail 控制(OpenAI 系)

取值行为token 成本
low低分辨率编码(512×512 缩略)85 tokens (固定)
high原始分辨率 + 多 patch数百到数千 tokens
auto(默认)模型自选依赖图像大小

支持图像的主流模型

供应商模型
OpenAI模型列表 → OpenAI 中的图像输入标记为准
Anthropic模型列表 → Claude 中的图像输入标记为准;Claude 最大 5 张图/请求,Chat Completions 协议会自动转换图片结构
Google模型列表 → Gemini 中的图像输入标记为准
Qwen模型列表 → 阿里 中的图像输入标记为准

视频输入

Gemini(base64 data URI)

平台当前限制:仅支持 base64 内嵌数据

图灵平台目前只支持 base64 内嵌方式传入 Gemini 视频。厂商原生还支持以下方式,平台暂未开放(表格来源:Gemini 官方文档):

厂商支持的传入方式最大大小推荐场景
文件 API20 GB(付费)/ 2 GB(免费)大文件(>100 MB)、长视频(>10 分钟)、可重用文件
Cloud Storage2 GB(每文件,无存储空间限制)大文件、长视频、持久化可重用文件
内嵌数据(base64)< 100 MB小文件(<100 MB)、时长 <1 分钟、一次性输入 ✅ 当前支持
YouTube URL不适用公开 YouTube 视频

Gemini 3 Pro 直接处理视频片段。把视频编码为 base64、以 data:video/<mime>;base64,<data> 传入:

import base64

with open("demo.mp4", "rb") as f:
b64 = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
model="turing/gemini-3-pro-latest",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "整理视频里提到的实验步骤为 5 条要点。"},
{
"type": "image_url",
"image_url": {
"url": f"data:video/mp4;base64,{b64}",
"mime_type": "video/mp4"
}
}
]
}],
extra_body={"thinkingConfig": {"includeThoughts": True}},
stream=True,
)
curl -N $TURING_BASE_URL/chat/completions \
-H "Authorization: Bearer $TURING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "turing/gemini-3-pro-latest",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "整理视频里提到的实验步骤"},
{
"type": "image_url",
"image_url": {
"url": "data:video/mp4;base64,{{VIDEO_BASE64}}",
"mime_type": "video/mp4"
}
}
]
}],
"stream": true
}'

推荐

  • 格式:MP4 (H.264) 或 MOV
  • 大小:Base64 字符串 < 32 MB
  • 时长:建议 < 10 分钟(更长需裁剪/关键帧)

Qwen Omni(视频帧数组)

Qwen Omni 系列用帧数组表达视频——把视频抽帧成多张图片序列:

{
"model": "qwen-omni-turbo-latest",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "这段视频描述了什么?"},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}},
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}}
]
}]
}

抽帧建议:5-30 FPS,关键场景变化处采样。

Qwen 视觉理解(video_url

通义千问视觉理解模型用 video_url content block 传完整视频。模型名不带 turing/ 前缀

支持的模型以 模型列表 → 阿里 中带视频输入 / 视觉理解能力的 Qwen 型号为准。

参数:

  • fps:抽帧速率,取值 [0.1, 10],默认 2
  • video_url.url:HTTPS URL 或 base64 data URI(data:video/mp4;base64,...)。
  • Token 估算:单帧约 h × w / (32 × 32) + 2 tokens。

请求示例

curl -N $TURING_BASE_URL/chat/completions \
-H "Authorization: Bearer $TURING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"stream": true,
"model": "qwen-vl-max-2025-08-13",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "你是视频内容分析专家。请识别说话者、场景与关键事件,并分条输出。"},
{"type": "video_url", "video_url": {"url": "https://example.com/sample.mp4"}, "fps": 2}
]
}]
}'

豆包 Doubao Seed 2.0(video_url block)

Doubao Seed 2.0 系列(pro / lite / mini)支持视频理解,使用专用的 video_url content block。支持两种传入方式:base64(本地文件)与公网 URL。

关键限制

  • 文件大小 ≤ 50 MB;base64 模式下请求体 ≤ 64 MB
  • 推荐 MP4 (H.264) 编码;data URI 的 MIME 类型需与实际格式匹配(如 data:video/mp4;base64,…
  • 抽帧速率范围 0.2–5 fps,默认 1 fps;视频中的音频部分不参与理解
  • 模型名不带 turing/ 前缀;具体型号以 模型列表 → 字节 中的 Doubao Seed 2.0 系列为准
  • 公网 URL 必须对海外服务器可访问(推理侧在海外),国内私有地址请改用 base64

方式 A:base64

BASE64_VIDEO=$(base64 -i video.mp4 | tr -d '\n')

curl $TURING_BASE_URL/chat/completions \
-H "Authorization: Bearer $TURING_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"model\": \"doubao-seed-2-0-pro-260215\",
\"messages\": [{
\"role\": \"user\",
\"content\": [
{\"type\": \"video_url\", \"video_url\": {\"url\": \"data:video/mp4;base64,$BASE64_VIDEO\"}},
{\"type\": \"text\", \"text\": \"请描述视频的主要内容\"}
]
}]
}"

方式 B:公网 URL

curl $TURING_BASE_URL/chat/completions \
-H "Authorization: Bearer $TURING_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seed-2-0-pro-260215",
"messages": [{
"role": "user",
"content": [
{"type": "video_url", "video_url": {"url": "https://example.com/sample.mp4"}},
{"type": "text", "text": "请描述视频的主要内容"}
]
}]
}'

video_url 不带 text 也可以提交,模型会自动给出整体描述;加上 text 引导特定任务。Doubao Seed 2.0 的思考能力(reasoning_effort)详见 思考与推理 / 豆包


音频输入

GPT-4o Audio

import base64

with open("speech.wav", "rb") as f:
audio_b64 = base64.b64encode(f.read()).decode()

response = client.chat.completions.create(
model="turing/gpt-4o-audio-preview",
modalities=["text", "audio"],
audio={"voice": "alloy", "format": "wav"},
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "请先转录这段音频再回答。"},
{
"type": "input_audio",
"input_audio": {"data": audio_b64, "format": "wav"}
}
]
}]
)

支持格式:wavmp3flacopuspcm16

Qwen Omni

qwen-omni-turbo-latest 既支持音频输入,也支持音频输出(同步返回 wav)。音频输出通过 modalities: ["text", "audio"]audio.voice 控制(可选 Cherry / Serena 等音色)。

{
"model": "qwen-omni-turbo-latest",
"modalities": ["text", "audio"],
"audio": {"voice": "Cherry", "format": "wav"},
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "回答音频里的问题"},
{"type": "input_audio", "input_audio": {"data": "...", "format": "wav"}}
]
}]
}

文件输入

文件(如 PDF)以 Base64 内联方式传入,走 Responses 协议input_file content block —— 注意这与本页其余示例使用的 Chat Completions 不同。

import base64
from openai import OpenAI

client = OpenAI(
api_key="your-api-key",
base_url="https://live-turing.cn.llm.tcljd.com/api/v1",
)

with open("report.pdf", "rb") as f:
b64 = base64.b64encode(f.read()).decode()

response = client.responses.create(
model="turing/gpt-5.4",
input=[{
"role": "user",
"content": [
{
"type": "input_file",
"filename": "report.pdf",
"file_data": f"data:application/pdf;base64,{b64}",
},
{"type": "input_text", "text": "总结这份报告的三个要点"},
],
}],
)

print(response.output_text)
PDF 输入注意事项
  • 同时支持文本与图像输入的模型可处理 PDF:解析时会把每页的文本与页面图像一并放入上下文,token 消耗显著上升
  • 内联请求体受大小限制,大文件请先拆分 / 压缩。

支持类型依模型而定:PDF、DOCX、PPTX、图像等。


厂商差异速查

能力OpenAIAnthropicGeminiQwenDoubao Seed 2.0
图片 URL✅(SDK 自动转 base64)✅(公网文件 < 15 MB)
图片 base64
detail: low/high✅(通过 image.source⚠ 只 auto
视频 (base64 data URI)✅ (image_url + mime_type,Gemini 2.5+/3.x)✅ (video_url)
视频(帧数组)✅(Omni 多 image_url
视频(video_url,可选 fps✅(VL/qwen3-vl/qwen3.5+/qwen3.6+)
视频抽帧速率模型自动VL:fps 字段 [0.1, 10],默认 2;Omni:客户端抽帧0.2–5 fps(默认 1)
音频输入✅ (gpt-4o-audio)✅ (Gemini 2.5+/3.x,image_url + mime_type)❌(视频内音频也不参与理解)
文件(PDF,base64)✅(Responses input_file,仅视觉模型)

最佳实践

  • 流式优先:多模态请求上下文大、生成慢,开 stream: true 能显著降首 token 延迟
  • 大文件走 base64 + 压缩:图像可 resize、视频可降分辨率
  • prompt 明确任务:"总结视频内的章节结构"、"比较两张图的差异"比"描述一下"好得多
  • 限定输出格式:要求 JSON / 要点列表,减少后处理
  • 多图/多视频:合并到同一 content 数组里,模型自动关联上下文
  • 图像 URL 海外可达:国内地址推荐换成 base64
  • Google URL 文件大小:Gemini/Google 的公网 URL 多媒体文件必须 < 15 MB,超过请压缩、切片或改用 base64

参数参考


计费影响

图像按 token 计费(视分辨率与模型而定);视频按时长 + 分辨率折算;音频按秒数(且输入输出分别计费)。详见 计费与用量


常见问题

  • 图片 URL 超时 → 换 base64 或用国内 CDN(仍需海外可达)
  • Google/Gemini URL 输入被拒 → 检查公网文件是否 < 15 MB,超过需压缩、裁剪或分段
  • Gemini 视频太大被拒 → 分段切片或降分辨率
  • GPT-4o Audio 没返回语音 → 检查 modalities: ["text", "audio"] 是否齐全
  • Qwen Omni 多帧识别差 → 抽帧频率提到 10+ FPS
  • Claude 图像 token 成本超预期 → 图片自动被放大到 1568×1568;可先压缩到 1024 以内

See also