海艺思创

首页/ AI绘图教程/ OpenAI Responses API 图像生成工具怎么接入绘图流程

AI绘图教程

OpenAI Responses API 图像生成工具怎么接入绘图流程

要把图像生成放进统一的 Responses API 工作流,核心是让模型负责理解任务和发起工具请求,由你的应用负责执行绘图、保存文件与回传结果。下面用一个可替换的图片工具适配层,带…

OpenAI Responses API 图像生成工具怎么接入绘图流程

准备

先准备一个服务端接口,不要把密钥放在浏览器。你的流程至少应有四类数据:用户的绘图需求、Responses API 的响应 ID、图片工具的任务结果、最终文件地址。

  • 安装并初始化 OpenAI Python SDK。
  • 准备一个可调用的图片生成函数,例如 run_image_job,用它对接你已经确认可用的图像生成服务。
  • 准备对象存储或本地受控目录,用于保存最终图片。
  • 建立任务表,记录 task_id、response_id、提示词、状态、文件地址和失败原因。

Responses API 的 create 方法支持传入 model、input、tools、metadata、stream 等参数。把任务标识写入 metadata,后续排查会轻松很多。

分步操作

  1. 定义图片工具边界。工具只接收必要参数,例如 prompt、aspect_ratio 和 asset_name。不要让模型直接决定服务器文件路径、用户权限或存储桶名称。
  2. 在请求中声明工具。将自定义函数工具放入 tools 数组,并在说明中告诉模型:需要图片时调用该工具,生成后返回素材编号和用途。
  3. 读取模型发起的工具调用。应用收到响应后,遍历输出项,识别函数调用请求,取得调用 ID、函数名和参数。具体字段以当前安装 SDK 的类型定义为准。
  4. 执行图片生成并归档。验证参数后调用 run_image_job,把返回的图片二进制内容写入自己的存储;生成不可预测的文件名,并保存任务与文件的关联。
  5. 把工具结果交回模型。将调用 ID 与结果 JSON 作为下一轮 input,让模型根据成功或失败状态输出素材说明、备用方案或下一步动作。
  6. 将完成状态与发布状态分开。图片生成成功只表示文件已得到;通过尺寸、格式和内容检查后,才将素材标记为可用。

可复制模板或示例

下面的代码展示的是自定义图片工具适配层。请把 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 或权限字段。
  • 确认失败结果不会被误标记为可发布素材。
  • 确认图片文件已实际写入你的存储,并能由目标页面正常读取。
  • 确认需要流式展示时,将进行中的状态与最终可用状态分开处理。

下一步

把这篇的方法练一遍

提示词和步骤可以带到创作里直接试做一版。

去创作 看同栏目更多