申請流程
要使用 OpenAI 圖像生成 API,首先可以到 OpenAI 圖像生成 API 頁面點擊「Acquire」按鈕,獲取請求所需要的憑證:
如果你尚未登入或註冊,會自動跳轉到登入頁面邀請您來註冊和登入,登入註冊之後會自動返回當前頁面。
在首次申請時會有免費額度贈送,可以免費使用該 API。
基本使用
接下來就可以在介面上填寫對應的內容,如圖所示:
authorization,直接在下拉列表裡面選擇即可。另一個參數是 model, model 就是我們選擇使用 OpenAI DALL-E 官網模型類別,這裡我們主要有 1 種模型,詳情可以看我們提供的模型。最後一個參數是prompt,prompt 是我們輸入要生成圖像的提示詞。
同時您可以注意到右側有對應的調用代碼生成,您可以複製代碼直接運行,也可以直接點擊「Try」按鈕進行測試。

created,生成此次圖像生成的 ID,用於唯一標識此次任務。data,包含圖像生成的結果信息。
data 是包含了模型生成圖片的具體信息,它裡面的 url 是生成圖片的詳情鏈接,可以發現如圖所示。

圖片質量參數 quality
接下來將介紹如何設置圖像生成結果的一些詳細參數,其中圖片質量參數 quality 包含兩種,第一個 standard 表示生成標準的圖片,另一個 hd 表示創建的圖像具有更精細的細節和更大的一致性。
下面設置圖片質量參數為 standard ,具體設置如下圖:


standard 的生成圖片如下圖所示:

hd ,可以得到如下圖所示的圖片:

hd 比 standard 生成的圖片具有更精細的細節和更大的一致性。
圖片大小尺寸參數 size
我們還可以設定生成圖片的尺寸大小,我們可以進行下面的設定。
下面設定圖片的尺寸大小為 1024 * 1024 ,具體設定如下圖:


1024 * 1024 的生成圖片如下圖所示:

1792 * 1024 ,可以得到如下圖所示的圖片:
可以看到圖片的尺寸大小很明顯不一樣,另外還可以設定更多尺寸大小,詳情信息參考我們官網文檔。
圖片風格參數 style
圖片風格參數 style 包含兩個參數,第一種 vivid 表示生成的圖片是更加生動的,另一種 natural 表示生成的圖片更加的自然一點。
下面設定圖片風格參數為 vivid ,具體設定如下圖:


vivid 的生成圖片如下圖所示:

natural ,可以得到如下圖所示的圖片:

vivid 比 natural 生成的圖片具有更加生動逼真。
圖片鏈接的格式參數 response_format
最後一個圖片鏈接的格式參數 response_format 也有兩種,第一種 b64_json 是對圖片鏈接進行 Base64 編碼,另一種 url 就是普通的圖片鏈接,可以直接查看圖片。
下面設定圖片鏈接的格式參數為 url ,具體設定如下圖:


url 的生成图片的链接为 图片 URL 这是可以直接访问的,图片内容如下图所示:

b64_json ,可以得到结果 Base64 编码后的图片链接,具体结果如下图所示:
异步回调
由于 OpenAI Images Generations API 生成图片的时间可能相对较长,如果 API 长时间无响应,HTTP 请求会一直保持连接,导致额外的系统资源消耗,所以本 API 也提供了异步回调的支持。 整体流程是:客户端发起请求的时候,额外指定一个callback_url 字段,客户端发起 API 请求之后,API 会立马返回一个结果,包含一个 task_id 的字段信息,代表当前的任务 ID。当任务完成之后,生成图片的结果会通过 POST JSON 的形式发送到客户端指定的 callback_url,其中也包括了 task_id 字段,这样任务结果就可以通过 ID 关联起来了。
下面我们通过示例来了解下具体怎样操作。
首先,Webhook 回调是一个可以接收 HTTP 请求的服务,开发者应该替换为自己搭建的 HTTP 服务器的 URL。此处为了方便演示,使用一个公开的 Webhook 样例网站 https://webhook.site/,打开该网站即可得到一个 Webhook URL,如图所示:
将此 URL 复制下来,就可以作为 Webhook 来使用,此处的样例为 https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab。
接下来,我们可以设置字段 callback_url 为上述 Webhook URL,同时填入相应的参数,如以下代码所示:
task_id 字段,data 字段包含了和同步调用一样的图片生成结果,通过 task_id 字段即可实现任务的关联。
错误处理
在调用 API 时,如果遇到错误,API 会返回相应的错误代码和信息。例如:400 token_mismatched:错误请求,可能是由于缺少或无效的参数。400 api_not_implemented:错误请求,可能是由于缺少或无效的参数。401 invalid_token:未授权,授权令牌无效或缺失。429 too_many_requests:请求过多,您已超出速率限制。500 api_error:内部服务器错误,服务器出现问题。

