OpenAI Responses API 图像生成工具怎么接入绘图流程
要把图像生成放进统一的 Responses API 工作流,核心是让模型负责理解任务和发起工具请求,由你的应用负责执行绘图、保存文件与回传结果。下面用一个可替换的图片工具适配层,带…
准备
先准备一个服务端接口,不要把密钥放在浏览器。你的流程至少应有四类数据:用户的绘图需求、Responses API 的响应 ID、图片工具的任务结果、最终文件地址。
- 安装并初始化 OpenAI Python SDK。
- 准备一个可调用的图片生成函数,例如 run_image_job,用它对接你已经确认可用的图像生成服务。
- 准备对象存储或本地受控目录,用于保存最终图片。
- 建立任务表,记录 task_id、response_id、提示词、状态、文件地址和失败原因。
Responses API 的 create 方法支持传入 model、input、tools、metadata、stream 等参数。把任务标识写入 metadata,后续排查会轻松很多。
分步操作
- 定义图片工具边界。工具只接收必要参数,例如 prompt、aspect_ratio 和 asset_name。不要让模型直接决定服务器文件路径、用户权限或存储桶名称。
- 在请求中声明工具。将自定义函数工具放入 tools 数组,并在说明中告诉模型:需要图片时调用该工具,生成后返回素材编号和用途。
- 读取模型发起的工具调用。应用收到响应后,遍历输出项,识别函数调用请求,取得调用 ID、函数名和参数。具体字段以当前安装 SDK 的类型定义为准。
- 执行图片生成并归档。验证参数后调用 run_image_job,把返回的图片二进制内容写入自己的存储;生成不可预测的文件名,并保存任务与文件的关联。
- 把工具结果交回模型。将调用 ID 与结果 JSON 作为下一轮 input,让模型根据成功或失败状态输出素材说明、备用方案或下一步动作。
- 将完成状态与发布状态分开。图片生成成功只表示文件已得到;通过尺寸、格式和内容检查后,才将素材标记为可用。
可复制模板或示例
下面的代码展示的是自定义图片工具适配层。请把 run_image_job 替换为你已验证的图像生成服务调用,不要照搬未确认的模型名或参数。
from openai import OpenAI
import json
client = OpenAI()
def run_image_job(prompt, aspect_ratio, asset_name):
# Replace this with your confirmed image provider adapter.
# Return only controlled application data.
return {
"ok": True,
"asset_id": "asset_example_001",
"file_url": "",
"aspect_ratio": aspect_ratio,
"asset_name": asset_name
}
tools = [{
"type": "function",
"name": "generate_drawing_asset",
"description": "Generate one drawing asset and return its archived file information.",
"parameters": {
"type": "object",
"properties": {
"prompt": {"type": "string"},
"aspect_ratio": {"type": "string"},
"asset_name": {"type": "string"}
},
"required": ["prompt", "aspect_ratio", "asset_name"],
"additionalProperties": False
}
}]
response = client.responses.create(
model="YOUR_CONFIRMED_MODEL",
input="Create a cover illustration plan. Use the image tool when an image is needed.",
tools=tools,
metadata={"task_id": "draw_20260903_001"}
)
# Read function-call items from response.output according to your SDK version.
# Validate arguments, run the image job, then send its JSON result back with the call ID.
工具回传结果建议保持稳定:成功时返回 asset_id、file_url、规格;失败时返回 ok、error_code、message。这样前端、审核和重试程序都不用猜测返回内容。图片 URL 或 Base64 得到后应尽快归档,保存方法可参考图片结果保存与归档流程。
翻车怎么改
常见故障:模型没有调用图片工具,只输出了一段图片描述。原因通常是工具说明过于笼统,或任务说明没有明确要求产出可保存的素材。修正动作是:在 input 中写明“需要成图时必须调用 generate_drawing_asset”,并让工具描述明确返回归档后的文件信息;同时在应用侧把“未得到 asset_id”判定为未完成,而不是直接发布。
常见故障:文件生成了,但后续找不到对应提示词。原因是只保存了图片地址,没有同步保存 response_id、原始任务和参数。修正动作是:以 task_id 为主键,写入响应 ID、工具参数、工具结果、创建时间和审核状态。
完成前检查
- 发布前验收项:每张可用图片都能通过 asset_id 找回任务、提示词和文件地址。
- 确认工具参数已在服务端校验,未允许模型传入任意路径、任意 URL 或权限字段。
- 确认失败结果不会被误标记为可发布素材。
- 确认图片文件已实际写入你的存储,并能由目标页面正常读取。
- 确认需要流式展示时,将进行中的状态与最终可用状态分开处理。
下一步
把这篇的方法练一遍
提示词和步骤可以带到创作里直接试做一版。