作成したAPEXアプリケーションは以下のように動きます。ローカルLLMへのプロンプトに含めた画像が正しく解釈されるか確認するためのアプリなので、凝ったことはしていません。
イメージを含めたプロンプトはLM StudioのUIからも送信できるのでAPEXでアプリケーションを作らなくてもいいのですが、PL/SQLコードのテストにはなります。
作成したAPEXアプリケーションのエクスポートを以下に置きました。実質的にホーム・ページだけのアプリケーションです。
https://github.com/ujnak/apexapps/blob/master/exports/local-lm-studio-multimodal-gemma3.zip
以下にアプリケーションについて簡単に説明します。
すべての機能はホーム・ページに実装しています。
写真をアップロードするページ・アイテムとしてP1_PHOTOを作成しています。タイプはイメージ・アップロードです。
ストレージのタイプに表APEX_APPLICATION_TEMP_FILES、ファイルをパージするタイミングとしてリクエストの終わりを選択しています。セッション・ステートのストレージはリクエストごと(メモリーのみ)です。
プロンプトを入力するページ・アイテムとしてP1_PROMPTを作成しています。タイプはテキスト領域です。
セッション・ステートのデータ型はVARCHAR2、ストレージはセッションごと(永続)として、一度入力したプロンプトをセッション・ステートに保存するようにしています。
ページ・アイテムP1_PHOTOに設定した写真とP1_PROMPTに記述したプロンプトをサーバーに送信するボタンとしてSUBMITを作成しています。動作のアクションはページの送信です。
LLMからの応答を表示するページ・アイテムとしてP1_RESPONSEを作成しています。タイプはリッチ・テキスト・エディタです。
設定の書式にマークダウンを選択しています。セッション・ステートのデータ型はCLOB、ストレージはセッションごと(永続)です。読取り専用に常時を設定しています。
タイプはコードを実行、ソースのPL/SQLコードとして以下を記述します。