创建聊天识图 (流式)base64 格式
POST/v1/chat/completions 创建聊天识图(流式,Base64 图片)
通过聊天补全接口发送文本与 Base64 编码图片,让模型对图片内容进行理解并以流式方式返回结果。
接口地址
POST https://www.vortapapi.com/v1/chat/completions
请求头
| 名称 | 必填 | 说明 |
|---|---|---|
Content-Type | 是 | 固定为 application/json |
Accept | 否 | 使用流式响应时可设置为 text/event-stream |
Authorization | 是 | API Key,格式为 Bearer sk-*** |
请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 要调用的模型名称,需使用支持视觉输入的模型 |
messages | array | 是 | 对话消息列表 |
messages[].role | string | 是 | 消息角色,例如 user、assistant、system |
messages[].content | string 或 array | 是 | 消息内容。传入图片时通常使用数组结构,包含文本与图片对象 |
stream | boolean | 否 | 是否启用流式输出。设为 true 时,接口会以 SSE 形式逐步返回内容 |
max_tokens | integer | 否 | 限制模型最多生成的 token 数 |
temperature | number | 否 | 控制输出随机性,值越高结果越发散 |
Base64 图片格式
图片需要放入 image_url.url 字段中,并使用 Data URL 形式:
data:image/png;base64,{BASE64_IMAGE}
也可以根据实际图片类型使用:
data:image/jpeg;base64,{BASE64_IMAGE}
请求示例
curl https://www.vortapapi.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-H "Authorization: Bearer sk-***" \
-d '{
"model": "gpt-4o-mini",
"stream": true,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请描述这张图片中的主要内容。"
},
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
}
],
"max_tokens": 500
}'
流式响应示例
启用 stream: true 后,响应会按事件分片返回。每个分片通常包含增量内容,最后以 [DONE] 结束。
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":"这张图片"},"finish_reason":null}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":"展示了一个场景,"},"finish_reason":null}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}
data: [DONE]
非流式响应示例
如果将 stream 设置为 false 或不传该字段,接口会在生成完成后一次性返回完整结果。
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "gpt-4o-mini",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "这张图片展示了一个场景,我可以看到其中的主要元素包括……"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 120,
"completion_tokens": 36,
"total_tokens": 156
}
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 本次聊天补全请求的唯一标识 |
object | string | 对象类型。非流式通常为 chat.completion,流式分片通常为 chat.completion.chunk |
created | integer | 响应创建时间,Unix 时间戳 |
model | string | 实际使用的模型 |
choices | array | 模型生成结果列表 |
choices[].index | integer | 当前结果在列表中的序号 |
choices[].message | object | 非流式响应中的完整消息 |
choices[].delta | object | 流式响应中的增量消息片段 |
choices[].finish_reason | string 或 null | 生成结束原因,例如 stop、length 等 |
usage | object | token 使用量统计。通常仅在非流式完整响应中返回 |
注意事项
- Base64 内容较长时,请确保请求体大小未超过模型或网关限制。
- 图片 MIME 类型需要与实际图片格式一致,例如 PNG 使用
image/png,JPEG 使用image/jpeg。 - 使用流式响应时,客户端需要按 SSE 数据流逐段读取
data:内容。 Authorization必须使用 Vortap API Key,并以Bearer方式传入。