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-2dall-e-3を選択できるようにしています。デフォルトdall-e-2にしています。


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

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


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


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

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

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


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_URLG_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のアプリケーション作成の参考になれば幸いです。