概ね、以下のGIF動画のように操作します。動画では以下のプロンプトを与えています。
- プラム色の服を一覧して。
- レポートをリセットして。
- カテゴリ別の服の数を左から少ない順にチャート表示して。
- このチャートをレポートとして保存して。
- レポートをリセットして
以下より、対話モード・レポートで生成AIを使用するための設定手順と、その設定について調べたことを紹介します。
公式ブログの以下の記事とAPEX Office Hoursの録画を参考にしています。
Talk to Your Data, Trust the result. Introducing APEX AI Interactive Reports
What's New in APEX 26.1 - Part 4
最初にOracle APEXから生成AIを呼び出すには、ワークスペース・ユーティリティの生成AIに、生成AIサービスを作成する必要があります。
ワークスペース・ユーティリティの生成AIを開きます。
プロバイダのタイプ、APIのエンドポイントURL、APIキー、呼び出すモデルをまとめて、生成AIサービスとして作成します。
対応しているAIプロバイダは、OCI生成AIサービス、OpenAI、Cohere、Google Gemini、Anthropic Claude、Mistral AI、Ollama、汎用(OpenAI API互換)です。
OpenAIについてはChat Completions APIで、Responses APIではありません。また、OpenAIと汎用(OpenAI API互換)は、APIキーが必須かどうかが設定上の違いに見えます。
AIプロバイダとしてOpenAIを選択した場合を例にとります。
最低限、名前、ベースURL、APIキー、静的ID(これは名前からデフォルト値が生成されます)、AIモデルを設定します。
後ほど説明しますが、AI Interactive Reportで使用するLLMは、必ずツール呼び出しに対応しているモデルで、できるだけツール呼び出しに強いモデルを選びます。
ここで資格証明に新規作成を選ぶと、新しく作成されたWeb資格証明にAPIキーが保存されます。
APIキーの更新は、Web資格証明から実施します。
動作確認に使用する、空のAPEXアプリケーションを作成します。名前はAI Interactive Reportとします。
対話モード・レポートで生成AIを使用するには、APEXアプリケーションのアプリケーション定義のAIで、サービスを設定します。
ワークスペース・ユーティリティの生成AIで作成した、生成AIサービスを選択します。
以上で対話モード・レポートで生成AIを使用する準備ができました。
ホーム・ページを開き、対話モード・レポートのリージョンを作成します。
識別の名前はApparel Products、タイトルもApparel Products、タイプは対話モード・レポートとします。
ソースの位置にサンプル・データを選び、サンプル・データとして製品を選択します。
データベースに表を作成せずにレポートの動作を確認できるように、APEX 26.1から追加されたデータ・ソースです。
以上で、動作する対話モード・レポートが作成できました。
生成AIを使った自然言語による操作を有効にします。
属性タブの生成AIにある自然言語サポートをオンにします。
デフォルトの検索モードとしてAIによる検索と行検索のどちらかを選べます。
レポート・コンテキストに、このレポートについてAIに解釈させる説明を記述します(レポートの定義情報は、システム・プロンプトに含まれています。レポート・コンテキストはこれらの定義情報に追加されます)。
ここで記述した文章は、レポートの定義情報のひとつとして、生成AIに送信されるシステム・プロンプトに含まれます。生成AIに送信されるのはレポートの定義情報で、レポートのソースが表やビューであっても、それらのメタ・データは生成AIに送信されません。
対話モード・レポートの検索フィールドへの入力に、AIによる検索か行検索のどちらかを選べます。
対話モード・レポートで設定したデフォルトの検索モードは、この設定にあたります。
検索モードがAIによる検索の場合、検索フィールドに自然言語を入力してレポートを操作できるはずなのですが、APEX 26.1ではなぜか、日本語だけ(英語はもちろん韓国語や中国語も大丈夫)が行検索として認識されてしまうようです。
アシスタントに「Shirtsだけを一覧して。」と伝えます。
対話モード・レポートのフィルタとしてCategory = 'Shirts'が追加され、レポートがリフレッシュされます。
このとき、対話モード・レポートのアシスタントに入力したメッセージが、生成AIに送信されます。対話モード・レポートには、アクションとしてレポートに適用できる操作が実装されていますが、それらの操作がツール定義としてメッセージと一緒に送信されています。
すべてのアクションがツール定義に含まれてはいないようですが、例えば、フィルタ・ツール、ソート・ツール、ハイライト・ツールといったツールが(OpenAIでの説明ではFunction calling)利用可能なツールとして、生成AIに送信されています。
生成AIはメッセージが「Shirtsだけを一覧して。」であることを認識して、フィルタ・ツールを呼び出してCategory = 'Shirts'を設定するように、レスポンスを返します。それを受けて、APEXはAPEX_IR.ADD_FILTERといったAPIを呼び出す、といった処理の流れになっています。
そのような処理であるため、任意のSQLが実行できるといった、いわゆるNL2SQLにあるようなセキュリティ上の懸念はありません。生成AIができることは、生成AIへのリクエストにツールとして渡している処理に限定されます。
AI Interactive Reportの説明では「生成AIで検索」できるといったような表現が見られますが、対話モード・レポートのAPIを生成AI経由で呼び出しているというのが処理の実態なので、自然言語で対話モード・レポートを操作する、というのがより正しい説明になるでしょう。
対話モード・レポートの説明はレポート・コンテキストに記述し、それが生成AIに送信されます。レポートのそれぞれの列についても、生成AIに送信するメッセージを設定できます。
列のプロパティとして生成AIが追加されています。
列コンテキストに列の説明を記述します。ここで記述した文章は、生成AIに送信されるメッセージのシステム・プロンプトに追加されます。
それに加えて、参照データ型があります。なし、共有コンポーネント、SQL問合せ、静的値から選んで設定します。
AI Interactive Reportから生成AIに送信されるメッセージに、対話モード・レポートから取り出される(つまり対話モード・レポートのソースから取り出されている)情報は含まれません。
その代わりに、参照データ型から取り出される情報を、その列の参照データ(referenceData)としてシステム・プロンプトに追加します。例えば、対話モード・レポートで個人情報を表示していたとしても、生成AIには参照データとして存在しない人名や電話番号といった情報を送信することができます。
参照データ型に静的値を選択した場合、静的値として以下のように値を設定します。システム・メッセージを確認したところ、コンポーネントとしてLOVを流用しているためか、表示値と戻り値がありますが、参照データとしてシステム・プロンプトに含まれるのは表示値のみのようです。そのため、参照データ型は共有コンポーネントやSQL問合せでも、表示値と戻り値が同じ値になるように構成すると良いでしょう。
今回の記事は以上になります。
NL2SQLとは異なり、データベースに保存されている業務データが生成AIに送信されることが無いように設計されているため、気軽に自然言語でレポートを操作することができます。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完


















