图像生成
图片生成允许应用通过 AISIX 发送提示词生成图片请求,并将调用方认证、模型别名、上游凭证和请求侧策略保留在同一条网关路径中。
AISIX 为配置服务提供方为 OpenAI 的模型别名暴露 OpenAI 图片生成路由。它会解析面向调用方的模型别名,只将 model 字段改写为上游模型 ID,并返回服务提供方的 JSON 图片响应。
本指南将通过 AISIX 发送图片生成请求,并说明该端点的服务提供方要求。
准备工作
请先准备以下内容:
- 一个可以处理代理请求的 AISIX 网关。
- 一个可以访问该模型别名的调用方 API Key。
- 一个配置服务提供方为 OpenAI,且适配器支持图片生成的模型别名。
导出网关连接和请求值:
# 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-prod"
发送图像请求
通过网关代理发送图片生成请求,并在请求体中使用 AISIX 模型别名:
curl -sS -X POST "${AISIX_PROXY}/v1/images/generations" \
-H "Authorization: Bearer ${AISIX_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "'"${AISIX_MODEL}"'",
"prompt": "A minimal illustration of an AI gateway"
}' \
-o aisix-image-response.json
AISIX 会解析模型别名、检查调用方 API Key、对提示词执行受支持的输入策略检查,只将 model 字段改写为上游模型 ID ,并将请求转发到上游图片生成端点。
响应保持 OpenAI 图片生成格式:
{
"created": 1710000000,
"data": [
{
"url": "https://example.com/generated-image.png"
}
]
}
某些 OpenAI 图片模型会根据请求和上游模型行为返回 base64 图片数据,而不是 URL。
检查响应是否包含一个图片条目:
jq '.data | length' aisix-image-response.json
命令应输出:
1
该路由不支持 stream: true。图像模型可以用服务器发送事件流式返回部分图片,但 AISIX 尚未中继该数据流,因此会在联系服务提供方之前直接返回 400,而不是静默缓冲:
{
"error": {
"message": "request payload is invalid: `stream` is not supported on /v1/images/generations",
"type": "invalid_request_error"
}
}
设置 stream: false 或未包含 stream 字段的请求不受影响,仍按原有方式转发。
OpenAI 服务提供方要求
图像生成路由与服务提供方强相关。只有当解析出的模型配置为 OpenAI 服务提供方时,AISIX 才会接受该请求。
这比使用 OpenAI 兼容适配器更严格。某个 OpenAI 兼容厂商可能可以用于 Chat Completions 路由,但仍会在图像生成路由被拒绝,因为其配置的服务提供方不是 OpenAI。
当解析出的模型没有配置为 OpenAI 服务提供方时,AISIX 会在发送到上游前返回 400。
如果解析出的 OpenAI 服务提供方桥接未实现图像生成,AISIX 会返回 501。这是服务提供方能力问题,不是调用方认证问题。