2024年1月26日金曜日

OpenAIのDALL-Eを呼び出して画像を生成するAPEXアプリケーションを作る

OpenAIのDALL-Eを呼び出して画像を生成するAPEXアプリケーションを作ってみました。

アプリケーションを動かすには、OpenAIのAPIを呼び出すためのAPIキーをAPEXのWeb資格証明として作成済みであることと、DALL-EのAPI呼び出しは課金されるので、購入したクレジットが残っていることが必要です。

作成したAPEXアプリケーションは以下のように動作します。


空のAPEXアプリケーションを作成し、デフォルトで作成されるホーム・ページに機能を実装しています。

以下より作成したアプリケーションを簡単に紹介します。

モデルを選択するページ・アイテムP1_MODELを作成しています。タイプは選択リスト、ラベルはmodelです。

LOVはタイプを静的値として、dall-e-2とdall-e-3を選択できるようにしています。デフォルトはdall-e-2にしています。


サイズを選択するページ・アイテムP1_SIZEも同様に、LOVのタイプを静的値として、1024x1024、1024x1792、1792x1024のどれかを選択するようにしています。デフォルトは1024x1024です。

この他にも指定可能なパラメータ(n、quality、styleなど)はありますが、これだけ設定していれば最低限の画像は生成できるので、他は省略します。


プロンプトを入力するページ・アイテムP1_PROMPTを作成します。ラベルはPrompt、タイプはテキスト領域を選択します。


DALL-Eによる画像生成を呼び出すボタンGENERATEを作成します。

外観のホットをオンにし、テンプレート・オプションのWidthにStretchを選択します。

動作のアクションはデフォルトのページの送信とします。


OpenAIのCreate Image APIは、リクエストのresponse_formatで明示的にb64_jsonを指定していないときは、生成された画像が置かれている位置のURLを返します。

返されたURLを保持するページ・アイテムP1_IMAGEを作成します。タイプにイメージの表示を選択します。

設定の基準にページ・アイテム値に格納されたイメージURLを選択することにより、ページ・アイテムの値であるURLより取得できる画像をページに表示します。


デバッグ用にCreate Image APIのレスポンスをそのまま表示するページ・アイテムを作成します。

識別の名前はP1_RESPONSE、タイプはテキスト領域とします。


ボタンGENERATEがクリックされたときに、OpenAIのDALL-Eを呼び出すプロセスを作成します。

識別の名前はGenerate Imageとします。タイプはコードを実行です。ソースのPL/SQLコードとして以下を記述します。


サーバー側の条件のボタン押下時にGENERATEを指定します。


コードに含まれるバインド変数G_REQUEST_URLとG_CREDENTIALの値を、アプリケーション定義の置換に設定します。

G_CREDENTIALには、OpenAIのAPIキーが設定されたWeb資格証明の静的IDを設定します。G_REQUEST_URLはAPIのエンドポイントである以下のURLを設定します。

https://api.openai.com/v1/images/generations


以上でアプリケーションは完成です。

今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-openai-dall-e.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。

完