2026年6月30日火曜日

APEX 26.1の対話モード・レポートでの生成AIの利用について

APEX 26.1では、生成AIを活用して自然言語で対話モード・レポートを操作できるようになりました。この機能はAI Interactive Reportと呼ばれています。

概ね、以下の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サービスOpenAICohereGoogle GeminiAnthropic ClaudeMistral AIOllama汎用(OpenAI API互換)です。

OpenAIについてはChat Completions APIで、Responses APIではありません。また、OpenAI汎用(OpenAI API互換)は、APIキーが必須かどうかが設定上の違いに見えます。


AIプロバイダとしてOpenAIを選択した場合を例にとります。

最低限、名前ベースURLAPIキー静的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から追加されたデータ・ソースです。

以上で、動作する対話モード・レポートが作成できました。


ページを実行します。APEX 26.1以前の対話モード・レポートです。


生成AIを使った自然言語による操作を有効にします。

属性タブの生成AIにある自然言語サポートオンにします。

デフォルトの検索モードとしてAIによる検索行検索のどちらかを選べます。

レポート・コンテキストに、このレポートについてAIに解釈させる説明を記述します(レポートの定義情報は、システム・プロンプトに含まれています。レポート・コンテキストはこれらの定義情報に追加されます)。

ここで記述した文章は、レポートの定義情報のひとつとして、生成AIに送信されるシステム・プロンプトに含まれます。生成AIに送信されるのはレポートの定義情報で、レポートのソースが表やビューであっても、それらのメタ・データは生成AIに送信されません。

以上の設定で、対話モード・レポートで生成AIを使用できるようになりました。


対話モード・レポートの検索フィールドへの入力に、AIによる検索行検索のどちらかを選べます。


対話モード・レポートで設定したデフォルトの検索モードは、この設定にあたります。

検索モードがAIによる検索の場合、検索フィールドに自然言語を入力してレポートを操作できるはずなのですが、APEX 26.1ではなぜか、日本語だけ(英語はもちろん韓国語や中国語も大丈夫)が行検索として認識されてしまうようです。


アシスタントを開いて入力すると、生成AIを使った自然言語による操作ができます。


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