跳到主要内容
版本:1.2.0

图像编辑

图像编辑允许应用通过 AISIX 发送"图片 + 提示词"的编辑请求,并将调用方认证、模型别名、上游凭证和请求侧策略保留在同一条网关路径中。

gpt-image-2 等编辑模型将源图片、可选的蒙版、提示词和所有调节参数放在同一个 multipart/form-data 请求体中。AISIX 读取该表单,解析面向调用方的模型别名,将 model 字段改写为上游模型 ID,然后逐字节原样重建其余所有部分——脱敏动作安全护栏规则改写的 prompt 文本除外,见下文——再转发到上游图像编辑端点。

本指南将通过 AISIX 编辑一张图片,并说明该端点的请求形态和服务提供方要求。

准备工作

请先准备以下内容:

  • 一个可以处理代理请求的 AISIX 网关。
  • 一个可以访问该模型别名的调用方 API Key。
  • 一个配置服务提供方为 OpenAI、上游 model_name 为图像编辑模型(如 gpt-image-2)的模型别名。示例使用别名 image-edit-prod
  • 一张待编辑的源图片文件。示例使用 original.png

导出网关连接和请求值:

# AISIX_PROXY 不含尾部斜杠或 /v1 等端点路径
# 本地快速入门使用 http://127.0.0.1:3000。
export AISIX_PROXY="YOUR_AISIX_GATEWAY_URL"
export AISIX_API_KEY="YOUR_CALLER_API_KEY"
export AISIX_MODEL="image-edit-prod"

发送图像编辑请求

以 multipart 表单形式通过网关代理发送编辑请求,并在 model 字段中使用 AISIX 模型别名:

curl -sS -X POST "${AISIX_PROXY}/v1/images/edits" \
-H "Authorization: Bearer ${AISIX_API_KEY}" \
-F "model=${AISIX_MODEL}" \
-F "image=@original.png" \
-F "prompt=Add a red hat to the subject" \
-F "size=1024x1024" \
-o aisix-image-edit-response.json

AISIX 会解析模型别名、检查调用方 API Key、对提示词执行受支持的输入策略检查,将 model 表单字段改写为上游模型 ID,然后把重建后的表单——图片字节、文件名和其余所有字段保持不变,除非脱敏动作安全护栏规则改写了提示词——转发到上游图像编辑端点。

响应保持 OpenAI 图片格式。编辑模型返回 Base64 图片数据和一个 Token 用量块:

{
"created": 1710000000,
"data": [
{
"b64_json": "..."
}
],
"usage": {
"input_tokens": 50,
"output_tokens": 1056,
"total_tokens": 1106
}
}

检查响应中包含一条图片记录:

jq '.data | length' aisix-image-edit-response.json

命令应输出:

1

请求字段

该路由只接受 multipart/form-data。JSON 请求体会返回网关错误信封中的 400

字段必填方含义
model网关AISIX 模型别名。AISIX 唯一必定改写的字段;配置了脱敏动作的安全护栏规则还可能改写 prompt
image服务提供方源图片文件。对于接受多张输入图片的模型,该字段可以重复出现;AISIX 会按原顺序转发每个部分,字节和文件名保持不变。
prompt服务提供方编辑指令。输入安全护栏会在请求发往上游之前检查并可脱敏该文本。
mask可选的蒙版图片,其透明区域标记要编辑的范围。原样转发。

其余所有表单字段——nsizequalitybackgroundinput_fidelity,以及服务提供方后续新增的任何参数——都会原样转发,因此上游新增参数不需要升级网关。未设置的字段不会出现在上游请求中。

备注

该路由不支持 stream=true。编辑模型可以用服务器发送事件流式返回部分图片,但 AISIX 尚未中继该数据流,因此会直接返回 400,而不是静默缓冲。

OpenAI 服务提供方要求

图像编辑路由是服务提供方专属路由。只有当解析到的模型配置的服务提供方为 OpenAI 时,AISIX 才会接受请求。

这比使用兼容 OpenAI 的适配器更严格。一个兼容 OpenAI 的供应商可以在聊天补全路由上正常工作,但由于其配置的服务提供方不是 OpenAI,仍会在图像编辑路由上被拒绝。

当解析到的模型配置的服务提供方不是 OpenAI 时,AISIX 会在向上游发送任何内容之前返回 400

上游 URL 的推导方式与其他 OpenAI 路由一致:未设置 api_base 时解析到标准 OpenAI API;api_base 为不带路径的主机时会在端点路径前追加 /v1

图像编辑行为

输入安全护栏会在 AISIX 调用服务提供方之前检查每一个 prompt 表单字段,脱敏动作规则会就地改写提示词文本。被阻断的提示词会在任何上游调用之前返回 422,且不占用模型限流容量。图片和蒙版字节不是可扫描文本,输出安全护栏也不会扫描生成后的图片字节。

提交会同时计入调用方 API Key 各层限流和模型限流。当上游响应包含 Token 用量块时——gpt-image 系列模型会返回——AISIX 会记录这些 Token 并计入基于 Token 的限流;不含用量块的响应按零 Token 记录。图片数量、尺寸和质量等按图片计费的细节不会在此代理路径中推断。

错误

失败会返回网关的 JSON 错误信封。服务提供方返回的 4xx——例如模型拒绝的 size 取值——会携带服务提供方自己的状态码和消息原样中继,不在下表范围内;下表只覆盖 AISIX 自身生成的状态码。

状态码触发场景
400请求体不是有效的 multipart/form-data、缺少 model 字段、设置了 stream=true,或解析到的模型服务提供方不是 OpenAI。
401调用方 API Key 缺失或无效。
403调用方 API Key 无权使用该模型别名,或请求来自模型允许列表之外的客户端 IP。
404模型别名无法解析。
413请求体超过配置的请求体大小限制。
422输入安全护栏阻断了提示词。不会向服务提供方发送请求。
429限流或 AISIX Cloud 预算拒绝了该请求。
502服务提供方返回服务端错误、响应不是有效 JSON,或无法连接。
504服务提供方未在模型的请求超时时间内应答。

下一步

你现在已经了解 AISIX 如何代理 OpenAI 图像编辑请求,以及 multipart 表单如何经过网关。接下来可以查看图像生成了解提示词生成图片路由,或查看语音与音频了解其他 multipart 端点。