Cookbook
图像生成 Images API 示例
图像生成 Images API 示例讲清 OpenAI-compatible 场景下的 Images API、Responses 图像工具、Prompt、参数、保存文件、流式预览、错误排查和发布复核。
图像生成不是“写一句 Prompt 然后等图”。如果要把生图能力接进脚本、内容后 台、素材库或自动化工作流,你需要同时处理用途、端点、模型名、尺寸、输出格 式、文件保存、参数记录和发布前复核。
这篇 Cookbook 面向已经准备动手的读者:开发者可以复制最小请求,运营和创作
者可以理解 Prompt 与参数记录,产品团队可以判断图像生成是否适合进入真实流
程。本文示例基于 OpenAI-compatible API 写法组织;OfApp.cn 当前文档展示了
/v1/images/generations 图像示例,具体图像模型、参数、额度和价格请以
OfApp.cn 控制台或官方文档为准。
| 项目 | 说明 |
|---|---|
| 阅读时间 | 约 7 分钟 |
| 更新时间 | 2026-07-03 |
| 适合读者 | 开发者、设计师、运营、自媒体、产品经理、正在搭建素材流程的团队 |
| 核心收益 | 用最小请求跑通生图、保存文件、记录参数,并把草案交给人工复核 |
| 你会得到 | Images API 示例、Responses 图像工具示例、端点选择矩阵、返回字段兼容表和上线检查 |
| 边界提醒 | 具体图像模型、参数、额度、价格和可用范围请以 OfApp.cn 控制台或官方文档为准 |
图像生成 API 是什么
Section titled “图像生成 API 是什么”图像生成 API 会根据文字 Prompt、尺寸、质量、输出格式等参数生成图片。和网 页对话式生图相比,API 生图更强调可复现:你能保存 Prompt、参数、文件名、 任务 ID、生成时间和人工复核结果。
常见接入方式有两类:
| 接入方式 | 适合场景 | 注意事项 |
|---|---|---|
| Images API | 已经知道要生成图片,想用最小请求保存文件 | 关注端点、返回字段、尺寸和输出格式 |
| Responses 图像工具 | 需要模型先理解文本、再触发图像生成 | 关注工具调用结果和流式事件 |
OpenAI 官方图像文档同时展示 Images API 和 Responses API 图像工具。OpenAI-compatible 服务不一定完整实现所有端点和参数,接入前要用最小请求验证。
端点选择矩阵
Section titled “端点选择矩阵”同一个“生成图片”需求,背后可能是不同 API 形态。先选端点,再写代码,可以 减少参数不兼容、返回字段不一致和上线后难复盘的问题。
| 任务 | 更适合的入口 | 判断标准 | 上线前要验证 |
|---|---|---|---|
| 直接根据 Prompt 生成单张图片 | Images API | 输入已经足够明确,只需要保存结果 | 端点、模型名、尺寸和返回字段 |
| 根据长文摘要生成封面草案 | Responses 图像工具 | 需要先理解材料,再生成视觉方向 | image_generation_call 是否返回可保存结果 |
| 内容后台批量生成配图 | 非流式 Images API | 后台任务更重视稳定和可重试 | 队列、失败项、参数记录和人工复核 |
| 创作工具实时预览 | Responses 流式图像 | 用户需要看到过程或中间方向 | SSE、partial_images、前端状态和成本边界 |
| 图像参数探索 | 小批量最小请求 | 还在比较尺寸、质量、风格和限制词 | 每次生成都记录 Prompt、参数和人工评价 |
export OPENAI_BASE_URL="https://api.ofapp.cn/v1"export OPENAI_API_KEY="sk-xxxx"export IMAGE_MODEL="以控制台可用图像模型为准"如果客户端会自动拼接 /v1,Base URL 应按客户端和服务商当前文档调整。图像
模型名不要凭记忆猜,应从控制台、模型接口或官方文档复制。
Prompt 怎么写
Section titled “Prompt 怎么写”一条稳定的图像 Prompt 通常包含六类信息。
| 信息 | 示例 |
|---|---|
| 用途 | 中文 AI 办公教程封面图 |
| 主体 | 干净的现代办公桌、打开的笔记本电脑、会议记录 |
| 构图 | 16:9 横版,桌面俯拍,画面中央留标题空间 |
| 风格 | 克制、可信、清爽,适合知识库文章 |
| 限制 | 不要品牌 logo,不要可识别人物,不要变形文字 |
| 输出 | 适合后续人工加标题和裁切 |
为一篇中文 AI 办公教程生成封面草案。画面是一张干净的现代办公桌,笔记本电脑打开文档摘要界面,旁边有纸质会议记录和一杯水。16:9 横版,画面中央上方留出标题空间。风格克制、可信、清爽。不要出现品牌 logo,不要出现可识别人物,不要生成文字标题。Prompt 的目标不是把每个形容词都堆上去,而是把用途、主体、构图和限制说清 楚。真正要发布的标题、Logo 和小字,建议后期用设计工具或前端排版添加。
cURL 最小请求
Section titled “cURL 最小请求”下面示例用 Images API 生成一张图片,并把 base64 返回解码成文件。不同服务 商对模型名、尺寸、质量和返回字段支持不同,先跑最小请求,再逐步加参数。
curl -sS "$OPENAI_BASE_URL/images/generations" \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "'"$IMAGE_MODEL"'", "prompt": "清爽可信的中文 AI 办公教程封面草案,不含品牌 logo,不含可识别人物。", "size": "1024x1024" }' \ | jq -r '.data[0].b64_json' \ | base64 --decode > image-output.png如果返回结构不是 .data[0].b64_json,先把完整脱敏响应保存下来,确认服务
商当前返回字段,再改解析逻辑。
返回字段兼容表
Section titled “返回字段兼容表”OpenAI 官方示例会把图片作为 base64 字符串保存,但不同 OpenAI-compatible 服务可能返回不同字段。生产代码不要只写一条固定解析路径,应先识别返回结构。
| 可能字段 | 常见来源 | 保存方式 | 排查要点 |
|---|---|---|---|
.data[0].b64_json |
Images API 返回 base64 | base64 --decode 或 Buffer.from(..., "base64") |
字段为空时保存脱敏响应 |
.data[0].url |
部分兼容服务返回临时 URL | 下载图片并记录来源 URL | 确认 URL 有效期和访问权限 |
image_generation_call.result |
Responses 图像工具 | 从 response.output 过滤图像结果 |
确认工具调用是否真的发生 |
partial_image_b64 |
流式预览事件 | 保存为预览图,不当作最终结果 | 预览数量和顺序不要写死 |
如果业务需要长期归档,建议把最终图片落到自有对象存储或素材库,并保存脱敏 响应摘要。不要只依赖临时 URL 或浏览器下载目录。
JavaScript 示例
Section titled “JavaScript 示例”import fs from "node:fs";import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, baseURL: process.env.OPENAI_BASE_URL, timeout: 60_000,});
const result = await client.images.generate({ model: process.env.IMAGE_MODEL, prompt: "清爽可信的中文 AI 办公教程封面草案,不含品牌 logo,不含可识别人物。", size: "1024x1024",});
const imageBase64 = result.data?.[0]?.b64_json;if (!imageBase64) { throw new Error("No image data returned. Check endpoint, model, and response format.");}
fs.writeFileSync("image-output.png", Buffer.from(imageBase64, "base64"));生产代码里不要只保存图片文件。建议同时保存 Prompt、模型名、尺寸、质量、 输出格式、生成时间、任务 ID 和人工复核状态。
Python 示例
Section titled “Python 示例”import base64import osfrom openai import OpenAI
client = OpenAI( api_key=os.environ["OPENAI_API_KEY"], base_url=os.environ["OPENAI_BASE_URL"], timeout=60.0,)
result = client.images.generate( model=os.environ["IMAGE_MODEL"], prompt="清爽可信的中文 AI 办公教程封面草案,不含品牌 logo,不含可识别人物。", size="1024x1024",)
image_base64 = result.data[0].b64_jsonimage_bytes = base64.b64decode(image_base64)
with open("image-output.png", "wb") as f: f.write(image_bytes)批量任务建议把失败项写入队列,不要在循环里无限重试。模型不可用、参数不支 持、quota 不足和内容被拒绝,都应分开记录。
Responses 图像工具
Section titled “Responses 图像工具”如果你需要模型先阅读文字材料、理解任务,再决定是否生成图片,可以使用 Responses API 的图像工具。下面示例只展示核心结构;具体参数支持以当前服务 商文档为准。
import fs from "node:fs";import OpenAI from "openai";
const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, baseURL: process.env.OPENAI_BASE_URL,});
const response = await client.responses.create({ model: process.env.IMAGE_MODEL, input: "根据一篇 AI 办公教程的摘要,生成一张适合做文章封面的图。", tools: [{ type: "image_generation" }],});
const image = response.output ?.filter((item) => item.type === "image_generation_call") ?.map((item) => item.result)[0];
if (image) { fs.writeFileSync("cover.png", Buffer.from(image, "base64"));}Images API 更像“我已经知道要生成什么图”;Responses 图像工具更适合“模型 需要先理解材料,再生成视觉草案”的流程。
OpenAI 官方图像文档说明,Images API 和 Responses API 都可以流式返回部分图
像,partial_images 可用于接收预览。它适合交互式界面,但上线时要注意三
点:
| 风险 | 处理方式 |
|---|---|
| 预览数量不稳定 | 不要把 partial 当作一定会出现的结果 |
| 成本增加 | 只在用户需要看过程时开启 |
| 前端复杂度提高 | 先跑非流式,再接 SSE 或事件流 |
如果只是后台批量生成素材,非流式更简单;如果是创作工具或游乐场式体验,流 式预览能让用户更早判断方向。
| 字段 | 为什么要记录 |
|---|---|
prompt |
复盘哪些描述真正有效 |
model |
排查模型差异和后续迁移 |
size |
判断平台裁切和成本 |
quality |
比较质量、速度和资源消耗 |
output_format |
决定透明背景、压缩和发布格式 |
createdAt |
回溯生成批次 |
reviewStatus |
标记待复核、已通过或已废弃 |
不记录参数的生图流程很难复用。团队做封面、产品图或素材库时,建议把图片和 参数一起入库。
| 检查项 | 为什么重要 |
|---|---|
| 人物肖像 | 避免误用可识别人物或近似公众人物 |
| 商标和品牌 | 避免生成未知 logo、包装和品牌元素 |
| 文字内容 | 图像模型容易生成错字、乱码或误导性文字 |
| 产品真实性 | 不把草案当成已存在产品或真实场景 |
| 版权和素材来源 | 对外发布前确认平台和业务规则 |
| 尺寸裁切 | 检查移动端、封面、社媒平台是否被裁掉 |
AI 生图适合作为草案、方向探索和自动化素材起点。对外发布的主视觉仍应经过 人工编辑、排版和复核。
| 现象 | 常见原因 | 修复 |
|---|---|---|
| 404 Not Found | 图像端点不支持或 Base URL 拼错 | 检查 /v1、端点和服务商文档 |
| model not found | 图像模型名不可用 | 从控制台或 Models API 复制真实模型名 |
| 返回字段为空 | 端点返回结构不同 | 保存脱敏响应,确认 b64_json 或 URL 字段 |
| 参数不支持 | 兼容服务未实现尺寸、质量或格式参数 | 删除非必要参数,从最小请求开始 |
| 生成内容不稳定 | Prompt 太泛或限制不清 | 增加用途、主体、构图和禁止项 |
| 发布后效果差 | 没有人工复核或二次排版 | 增加审核、裁切和设计修正步骤 |
- OpenAI 图像生成指南:说明 Images API、Responses 图像工具、流式预览和
partial_images。 - OpenAI Images API Reference:说明
/images/generations、图像返回对象和b64_json等字段。 - OfApp.cn 官方首页:用于理解 OfApp.cn 的 OpenAI-compatible、GPT Image、Codex、Claude 兼容和 Genius 入口定位。
- OfApp.cn API 直转文档:用于核对 Base URL、API Key、
/v1接入方式和 Images API 示例;具体模型、能力、参数、额度和价格请以控制台或官方文档为准。 - OfApp.cn 天才游乐场:用于确认面向普通用户的在线体验入口,API 示例和在线试用场景应分开描述。
Images API 和 GPT Image 是一回事吗?
Section titled “Images API 和 GPT Image 是一回事吗?”不是完全等同。Images API 是接口形态,GPT Image 是图像生成能力或模型入口 的一种说法。你接入时要确认当前服务商支持哪个端点、哪些模型和哪些参数。
一定要用 Images API 吗?
Section titled “一定要用 Images API 吗?”不一定。如果任务只是“根据 Prompt 生成一张图”,Images API 通常更直接。如 果任务需要先理解长文本、资料或上下文,再决定如何生成图片,可以考虑 Responses 图像工具。
生成图片可以直接商用吗?
Section titled “生成图片可以直接商用吗?”不应默认。发布前要检查服务条款、版权、人物肖像、商标、平台规则和业务真实 性。API 能生成草案,不代表草案自动适合对外发布。
中文标题可以直接让图像模型生成吗?
Section titled “中文标题可以直接让图像模型生成吗?”不建议把重要中文标题完全交给图像模型。更稳的流程是生成无字背景或留白构 图,再用设计工具、PPT、前端或图片编辑软件添加标题。
OfApp.cn 支持哪些图像模型和参数?
Section titled “OfApp.cn 支持哪些图像模型和参数?”本文不做具体承诺。OfApp.cn 官方文档当前展示图像生成入口和示例,但真实可 用模型、参数、额度和价格可能调整,请以 OfApp.cn 控制台或官方文档为准。
为什么同一个 Prompt 每次生成不一样?
Section titled “为什么同一个 Prompt 每次生成不一样?”图像生成带有随机性,模型版本、参数、输入细节和服务端实现都可能影响结果。 如果要复盘,至少记录 Prompt、模型、尺寸、质量、输出格式、生成时间和人工 选择结果。
- GPT Image 接入教程:理解图像 API、参数和上线边界。
- API 生图示例:跑通更完整的图像生成请求和保存流程。
- AI 生图与 GPT Image:从创作流程理解封面、海报和产品图。
- 生图 Prompt:改写可复用的图像提示词模板。
- 自媒体封面生成:把生图用于文章和社媒封面。
- model not found:排查模型名不可用。
- 404 Not Found:排查端点和 Base URL。
- 错误重试示例:为临时失败设置有限重试。
图像生成 API 的价值不只是“生成一张图”,而是把视觉探索变成可复现、可审 核、可接入业务的流程。先用最小请求验证端点、模型名和返回字段,再逐步加入 尺寸、质量、流式预览和批量任务。对外发布前,始终做版权、人物、品牌、文字 和尺寸复核。