返回模型调用 API 参考
POST/v1/chat/completions

Gemini Image Chat 兼容生成与编辑

通过 Chat Completions 调用 Gemini Pro Image 或 Flash Image,复用已有对话请求流程,并从 Markdown data URI 中提取生成图片。

API Key application/json

功能与适用模型

推荐 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/completions

Body

必填
Bodyapplication/json
Bodyobject
modelstring必填

要使用的模型的 ID。有关哪些模型可与聊天 API 一起使用的详细信息,请参阅模型端点兼容性表。

messagesarray<object>必填

至今为止对话所包含的消息列表。Python 代码示例。

元素object
rolestring
contentstring
temperatureinteger

使用什么采样温度,介于 0 和 2 之间。较高的值(如 0.8)将使输出更加随机,而较低的值(如 0.2)将使输出更加集中和确定。 我们通常建议改变这个或`top_p`但不是两者。

top_pinteger

一种替代温度采样的方法,称为核采样,其中模型考虑具有 top_p 概率质量的标记的结果。所以 0.1 意味着只考虑构成前 10% 概率质量的标记。 我们通常建议改变这个或`temperature`但不是两者。

ninteger

默认为 1 为每个输入消息生成多少个聊天补全选择。

streamboolean

默认为 false 如果设置,则像在 ChatGPT 中一样会发送部分消息增量。标记将以仅数据的服务器发送事件的形式发送,这些事件在可用时,并在 data: [DONE] 消息终止流。Python 代码示例。

stopstring

默认为 null 最多 4 个序列,API 将停止进一步生成标记。

max_tokensinteger

默认为 inf 在聊天补全中生成的最大标记数。 输入标记和生成标记的总长度受模型的上下文长度限制。计算标记的 Python 代码示例。

presence_penaltynumber

-2.0 和 2.0 之间的数字。正值会根据到目前为止是否出现在文本中来惩罚新标记,从而增加模型谈论新主题的可能性。 [查看有关频率和存在惩罚的更多信息。](https://platform.openai.com/docs/api-reference/parameter-details)

frequency_penaltynumber

默认为 0 -2.0 到 2.0 之间的数字。正值根据文本目前的存在频率惩罚新标记,降低模型重复相同行的可能性。 有关频率和存在惩罚的更多信息。

logit_biasnull

修改指定标记出现在补全中的可能性。 接受一个 JSON 对象,该对象将标记(由标记器指定的标记 ID)映射到相关的偏差值(-100 到 100)。从数学上讲,偏差在对模型进行采样之前添加到模型生成的 logit 中。确切效果因模型而异,但-1 和 1 之间的值应减少或增加相关标记的选择可能性;如-100 或 100 这样的值应导致相关标记的禁用或独占选择。

userstring

代表您的最终用户的唯一标识符,可以帮助 OpenAI 监控和检测滥用行为。[了解更多](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids)。

response_formatobject

指定模型必须输出的格式的对象。 将 { "type": "json_object" } 启用 JSON 模式,这可以确保模型生成的消息是有效的 JSON。 重要提示:使用 JSON 模式时,还必须通过系统或用户消息指示模型生成 JSON。如果不这样做,模型可能会生成无休止的空白流,直到生成达到令牌限制,从而导致延迟增加和请求“卡住”的外观。另请注意,如果 finish_reason="length",则消息内容可能会被部分切断,这表示生成超过了 max_tokens 或对话超过了最大上下文长度。 显示属性

seeninteger

此功能处于测试阶段。如果指定,我们的系统将尽最大努力确定性地进行采样,以便使用相同的种子和参数进行重复请求应返回相同的结果。不能保证确定性,您应该参考 system_fingerprint 响应参数来监控后端的更改。

toolsarray<string>必填

模型可以调用的一组工具列表。目前,只支持作为工具的函数。使用此功能来提供模型可以为之生成 JSON 输入的函数列表。

元素string
tool_choiceobject必填

控制模型调用哪个函数(如果有的话)。none 表示模型不会调用函数,而是生成消息。auto 表示模型可以在生成消息和调用函数之间进行选择。通过 {"type": "function", "function": {"name": "my_function"}} 强制模型调用该函数。 如果没有函数存在,默认为 none。如果有函数存在,默认为 auto。 显示可能的类型

路径、查询与 Header 参数

参数位置类型必填说明示例
Content-TypeHeaderstring是-application/json
AcceptHeaderstring是-application/json
AuthorizationHeaderstring是必填。使用青云TOP API 的 API Key,保留 Bearer 后的空格。Bearer YOUR_API_KEY
Response

返回响应 200

HTTP 响应
响应 200json
响应 200object
idstring必填
objectstring必填
createdinteger必填
choicesarray<object>必填
元素object
indexinteger
messageobject
rolestring必填
contentstring必填
finish_reasonstring
usageobject必填
prompt_tokensinteger必填
completion_tokensinteger必填
total_tokensinteger必填

文生图示例

点击横向标签切换语言。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 图片生成。