Reasoning models
これらの推論モデルをOracle APEXのアプリから呼び出してみました。呼び出しの確認が目的なので、簡単に実装しています。o1のモデルはStreamingをサポートしていますが、Oracle APEXのバックエンド、つまりデータベース・サーバーではStreamingを扱うのは難しいため、使っていません。
作成したAPEXアプリケーションは以下のように動作します。例では、以下のつるかめ算の回答をお願いしています。
回答は「鶴12匹、亀8匹」でした。正解です。
空のAPEXアプリケーションを作成し、デフォルトで作成されるホーム・ページにすべての機能を実装しています。
作成したアプリケーションのエクスポートは以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/reasoning-with-openai-o1-mini.zip
OpenAIのAPIの呼び出しに使用するWeb資格証明が、静的IDOPENAI_API_KEYとして作成されていることが前提です。静的IDが異なる場合は、APIを呼び出しているAPEX_WEB_SERVICE.MAKE_REST_REQUESTの引数p_creadential_static_idの値を変更します。
ページ・アイテムP1_QUESTIONにプロンプトを入力します。複数行の文字列を入力するため、タイプはテキスト領域を選んでいます。
OpenAI o1(費用の関係からo1-miniを呼んでいます)からの回答は、ページ・アイテムP1_ANSWERに出力しています。タイプとしてリッチ・テキスト・エディタを選択しています。
Oracle APEXのパッチ・レベルが24.1.4であれば、設定のライブラリよりOracleリッチ・テキスト・ライブラリを選択できます。Oracle APEXの将来のバージョンでTinyMCEは非推奨になる予定です。Oracle APEXが採用しているリッチ・テキスト・エディタのライブラリは、CKEditor4、CKEditor5、TinyMCEと置き換えられてきましたが、これがOracleリッチ・テキスト・ライブラリに置き換わります。ただし、Oracleリッチ・テキスト・ライブラリの実体はCKEditor5なので、TinyMCEからCKEditor5に戻ったともいえます。
その他にAPIのレスポンスに含まれるfinish_reasonを表示するページ・アイテムとしてP1_FINISH_REASON、モデル名を表示するP1_MODEL、利用状況(usage)を表示するP1_USAGEを作成しています。P1_USAGEについては、数値がわかれば十分なので、JSONドキュメントをそのまま出力しています。
ボタンSUBMITをクリックして、OpenAIのAPI呼び出しを呼び出します。動作のアクションは、ボタンのデフォルトのページの送信です。
ボタンSUBMITをクリックしたときに実行されるプロセスとしてCall OpenAI APIを作成します。このプロセスに、以下のコードを記述します。
以上でアプリケーションは完成です。アプリケーションを実行すると、記事の先頭のGIF動画のように動作します。
今回の記事は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完