大部分图片模型都可以用 OpenAI 兼容的两个接口调用:文生图
POST /v1/images/generations、图片编辑 POST /v1/images/edits。直接用 OpenAI 官方 SDK,把 base_url 换成 https://api.ephone.ai/v1 即可。文生图
b64_json 已截断):
编辑图片
把一张或多张图片连同提示词发给编辑接口,可以改风格、换元素、多图合成;带上遮罩图mask 可以只重绘透明区域。图片用 multipart 表单上传,多张时字段名用 image[](官方 SDK 传列表会自动处理)。
流式返回预览图
gpt-image 系列(gpt-image-2.5-sunburst、gpt-image-2.5-flare、gpt-image-2、gpt-image-1.5、gpt-image-1 等)支持流式:传 stream: true,生成过程中先推送 0~3 张预览图,最后推送完整图片。适合在界面上先给用户看到画面轮廓,等待感更短。
返回的是 SSE 事件流,每条事件的
type 与 event: 行一致:
image_generation.partial_image:一张预览图(编辑接口为image_edit.partial_image),partial_image_index从 0 开始image_generation.completed:最终图(编辑接口为image_edit.completed),带本次的usageerror:推送过程中出错,见下文
client.images.edit(...) 加上 stream=True, partial_images=2,cURL 里加 -F stream=true -F partial_images=2,事件名换成 image_edit.*。
原始事件流示例(b64_json 已截断):
计费
- 每张预览图都会额外消耗一些图片输出 token(数量随尺寸和画质变化),已经包含在
completed事件的usage里,按实际用量扣费,不另外收费。不需要预览图时把partial_images设为 0。 - 出错没有拿到最终图的请求不扣费。
- 推送途中客户端断开连接时,图片仍会生成完成并照常扣费。
出错时
- 开始推送之前出错(参数错误、余额不足、内容审核不通过等):和非流式一样返回 HTTP 错误码与 JSON 报错。
- 推送过程中出错(已经收到预览图之后):连接上会收到一条
error事件,随后结束,此时 HTTP 状态码已经是 200。官方 SDK 遍历事件时会抛出APIError,请用try包住整个遍历:
其他说明
- 一次要多张图(
n大于 1)时没有预览图:每张最终图各一条completed事件,usage只在最后一条上,是所有图片的合计。 - 其他模型也可以传
stream: true:没有预览图,图片生成完后收到一条completed事件,代码不用区分模型。 - 流式下图片默认以 base64(
b64_json)返回;传response_format: "url"时最终图改为图片链接,预览图仍是 base64。 - 不要预览图时,最终图出来之前连接上可能长时间没有数据,请把客户端的读取超时设为几分钟。
常用参数
注意事项
相关链接
OpenAI 图片生成指南
官方的用法说明,含流式与编辑
OpenAI 图片接口参考
完整参数与事件字段