返回模型调用 API 参考POST/v1/chat/completions
Gemini Image Chat 兼容生成与编辑
通过 Chat Completions 调用 Gemini Pro Image 或 Flash Image,复用已有对话请求流程,并从 Markdown data URI 中提取生成图片。
功能与适用模型
推荐 gemini-3.1-flash-image 与 gemini-3-pro-image。本页适合单轮文生图或图片编辑;需要完整思考签名、搜索引用、多轮连续编辑或 Flash Lite 时,优先使用Gemini 原生格式。
这是本站的 Chat 兼容格式。请求使用 model、messages 和 extra_body,返回是 Chat 响应;不能将原生 contents、generationConfig 或 Images API 参数混入本页。模型分辨率和参考图片限制仍见模型参数。
第一步:设置鉴权
使用请求头 Authorization: Bearer YOUR_API_KEY。将 YOUR_API_KEY 替换为青云TOP API 的 API Key,保留 Bearer 后的空格;基础地址为 https://top.qingyuntop.ai。
第二步:调用模型
POST https://top.qingyuntop.ai/v1/chat/completions
Content-Type 为 application/json。本页使用原始 HTTP 调用,展示的是实际发送的 JSON。若使用 OpenAI SDK,其 extra_body 方法参数通常会合并到 HTTP 顶层;要发送本页同名嵌套对象,需要确认最终序列化结果包含 "extra_body":{"google":...},不能机械照搬方法参数层级。
Request
请求
/v1/chat/completionsBody
必填路径、查询与 Header 参数
| 参数 | 位置 | 类型 | 必填 | 说明 | 示例 |
|---|
Content-Type | Header | string | 是 | - | application/json |
Accept | Header | string | 是 | - | application/json |
Authorization | Header | string | 是 | 必填。使用青云TOP API 的 API Key,保留 Bearer 后的空格。 | Bearer YOUR_API_KEY |
文生图示例
点击横向标签切换语言。cURL 使用 Bash,需支持 --fail-with-body;文件/历史示例还需 jq 和 base64。Python 需安装 requests;Node.js 需 20 或更新版本,保存为 .mjs。示例的 600 秒超时是客户端设置,不是生成时限承诺。建议每个示例使用独立目录;同名输出文件会覆盖。
set -euo pipefail
cat > request-template.json <<'JSON'
{
"model": "gemini-3.1-flash-image",
"messages": [
{
"role": "user",
"content": "生成一张现代咖啡店的宣传海报,画面是一杯陶瓷杯装的拿铁,米白色背景,标题清晰写着“早安咖啡”,自然晨光,简洁留白。"
}
],
"stream": false,
"extra_body": {
"google": {
"image_config": {
"aspect_ratio": "1:1",
"image_size": "1K"
}
}
}
}
JSON
cp request-template.json request.json
[ "$(wc -c < request.json)" -lt 20000000 ] || { echo "请求超过 20 MB,请压缩图片或缩短历史" >&2; exit 1; }
curl --fail-with-body --connect-timeout 30 --max-time 600 "https://top.qingyuntop.ai/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @request.json \
--output response.json
本地图片编辑示例
准备真实的 product.png。本示例使用 Pro Image 和 2K;图片写入 messages[0].content[1].image_url.url,包含 data:image/png;base64, 前缀。这与原生 inlineData.data 不带前缀的要求不同。
set -euo pipefail
cat > request-template.json <<'JSON'
{
"model": "gemini-3-pro-image",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "将这张产品照片的背景改成浅绿色,保持产品外形、标志和文字不变。"
},
{
"type": "image_url",
"image_url": {
"url": "__IMAGE_1__"
}
}
]
}
],
"stream": false,
"extra_body": {
"google": {
"image_config": {
"aspect_ratio": "1:1",
"image_size": "2K"
}
}
}
}
JSON
base64 < product.png | tr -d '\r\n' > image-1.b64
jq --rawfile image1 image-1.b64 '.messages[0].content[1].image_url.url = ("data:image/png;base64," + $image1)' request-template.json > request.json
[ "$(wc -c < request.json)" -lt 20000000 ] || { echo "请求超过 20 MB,请压缩图片或缩短历史" >&2; exit 1; }
curl --fail-with-body --connect-timeout 30 --max-time 600 "https://top.qingyuntop.ai/v1/chat/completions" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data-binary @request.json \
--output response.json
响应与图片保存
读取 choices[].message.content。本页格式使用 Markdown 图片语法包裹 data:image/png;base64, 开头的 data URI,可能与普通文字交错;不是 data[].url 或 b64_json。Python/Node.js 使用匹配 data URI 的提取逻辑保存每张图片,同时保留完整 response.json。cURL 用户可直接选用 Python/Node.js 标签中的本地结果处理部分;不要将整段 Markdown 当作 Base64。
必须同时检查 HTTP 状态、error、choices[].finish_reason 与实际图片内容。stop 但没有图片时可能仅返回了文字说明;阅读响应后排查,不自动当作成功。不同格式的图片响应请保留脱敏结构联系本站支持,不把任意 URL 自动下载并认定为本页契约。
流式、多轮与错误
本页示例固定 stream=false。若业务已有 Chat SSE 消费器并使用 stream=true,需按事件解析并拼接 choices[].delta.content,再提取完整 Markdown data URI;一个分片不一定包含完整图片。不要使用原生流式的 candidates 解析器读取 Chat SSE。
Chat 文字与 Markdown 输出不完整保留原生图片块的思考签名,不把它直接拼成原生 model 历史。连续精细修改请使用原生多轮编辑。参数无效、只有文本或图片数据损坏时参阅错误排查。官方模型能力参考:Gemini 图片生成。