17.7.4 アプリケーションへの生成AIの組込み

アプリケーションに生成AIを組み込むには、生成AIサービスを作成し、「AI」ページでアプリケーション属性を構成して、AIアシスタントを開くための動的アクションを作成します。

17.7.4.1 アプリケーションへの生成AIの組込みについて

アプリケーションに生成AI (AIアシスタントなど)を組み込む方法について学習します。

AIアシスタントを開く動的アクションを作成して、アプリケーションにAIを組み込むことができます。実際の手順は、動的なアクションへのボタンのフックと同じくらい簡単です。

一般に、ステップは次のとおりです:

  1. 生成AIサービスを作成します。「生成AIサービス・オブジェクトの作成」を参照してください。
  2. アプリケーションを作成します。「アプリケーションの作成」を参照してください。
  3. アプリケーション定義を編集し、「AI」タブで属性を構成します。「アプリケーションのAI属性の構成」を参照してください。
  4. Open AIアシスタントのTrueアクションを使用して動的アクションを作成します。「AIアシスタントを開く動的アクションの作成」を参照してください。

Open AIアシスタントのTrueアクションについて

Open AIアシスタントのTrueアクションを構成することで、この機能は真価を発揮します。ページ・デザイナでアクション属性を編集すると、あらゆる種類の動作を定義できます。次の例を参考にしてください。

  • 生成AI、システム・プロンプト - ユーザー入力を要求するAIコンテキストを指定するシステム・プロンプトを指定します。アプリケーション・アイテム、ページ・アイテムおよびシステム変数をサポートします。
  • 生成AI、ようこそメッセージ - AIアシスタントが表示するようこそメッセージを指定します。置換のサポート: アプリケーション・アイテム、ページ・アイテムおよびシステム変数。
  • 外観、表示形式 - AIアシスタントをダイアログとして表示するか、インラインで表示するかを選択します。
  • 最初のプロンプト、タイプ - 実際の人から送信されたもののようにするために、ユーザーに表示される最初のプロンプト(またはメッセージ)を指定します。メッセージは、アイテムまたはJavaScript式の値として保存できます。
  • レスポンスの使用、タイプ - AIアシスタントがレスポンスを返す方法を選択します。レスポンスという用語は、個々のチャット・メッセージのメッセージ・コンテンツを指します。このレスポンスをページ・アイテム値で直接取得するか、JavaScriptコードを使用してより複雑なロジックに基づいて処理するかを選択できます。
  • クイック・アクション、タイプ - チャット全体のクイック・アクションとして機能するメッセージを入力します。クイック・アクションは事前に定義されている語句で、クリックすると、ユーザー・メッセージとして送信されます。テンプレート・ディレクティブ、アプリケーション・アイテム、ページ・アイテムおよびシステム変数をサポートします。

プログラムによるAIインフラストラクチャの活用

APEX_AIパッケージを使用して、プログラムでAIインフラストラクチャにアクセスすることもできます。APEX_AI APIにはAPEXセッションが必要であり、生成AIサービスが適切に構成されているAPEXアプリケーションにリンクされている必要があります。次のSQL Developerの例を検討してください:

set serveroutput on;

declare
    l_result clob;
begin
    apex_session.create_session (
        p_app_id   => 102,
        p_page_id  => 1,
        p_username => 'ADMIN' );

    l_result := apex_ai.generate( 'what''s 1+1?' );

    sys.dbms_output.put_line( l_result );

    apex_session.delete_session;
exception
    when others then
        apex_session.delete_session;
        raise;
end;
/

関連項目:

『Oracle APEX APIリファレンス』APEX_AI

17.7.4.2 アプリケーションのAI属性の構成

「AI」ページで属性を編集して生成AIサービスを選択し、アプリケーションの同意メッセージを定義します。

ヒント:

「AI」ページで属性を構成する前に、ワークスペース・ユーティリティで生成AIサービスを定義する必要があります。「生成AIサービスの管理」を参照してください。

アプリケーションのAI属性を構成するには:

  1. 「生成AIサービスの管理」の説明に従って、生成AIサービスを定義します。
  2. 「AI」ページに移動します:
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. アプリケーションのホームページで、アプリケーション名の右側にある「アプリケーション定義の編集」をクリックします。
    4. 「AI」タブをクリックします。

    「AI」ページが表示されます。

  3. 「AI」ページで属性を構成します:
    1. 生成AI、サービス - このアプリケーションのデフォルトのAIサービスを選択します。
    2. 生成AI、同意メッセージ - 選択したAIサービスの使用に対する同意メッセージを入力します。

      定義した同意メッセージは、ユーザーが初めてAIサービスにアクセスしたときに表示されます。ユーザーは、AIと対話する前にメッセージに同意する必要があります。ユーザーの選択(受入れまたは拒否)はプリファレンスとして格納されるため、プロンプトは1回のみ表示されます。

      ノート:

      APEX_AIパッケージを使用して、ユーザーの同意をプログラムで設定またはクリアすることもできます。『Oracle APEX APIリファレンス』APEX_AIを参照してください。

      APEX_AIパッケージを使用して、ユーザーの同意をプログラムで設定またはクリアします。

  4. 「変更の適用」をクリックして、変更を保存します。

17.7.4.3 AIアシスタントを開く動的アクションの作成

AIアシスタントを開く動的アクションを作成します。

ノート:

AIアシスタントを開く動的アクションを追加するには、「アプリケーションへの生成AIの組込みについて」で説明されているステップを完了しておく必要があります。生成AIサービスの作成またはアプリケーションの編集を行わないと、AI属性はエラーになります。

次の簡単な例では、AIアシスタントをダイアログに表示するボタンにフックされた動的アクションを作成します。この例では、限られた数の属性のみを示しています。この例では、アプリケーションとページがすでに作成されていることを前提としています。

AIアシスタントを開く動的アクションを追加するには:

  1. アプリケーション・ページに移動します。
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. ページを選択します。
    ページ・デザイナが表示されます。
  2. ボタンを含めるリージョンを作成します。たとえば、「AIダイアログを開く」という名前のリージョンを作成します。
    1. 右本文で、コンテキスト・メニューから「リージョンの作成」を選択します。
      ページ・デザイナで、リージョン属性を編集します。
    2. 識別、名前 - リージョン名を入力します。タイトル属性が空の場合、リージョン名がランタイム・リージョン・タイトルとして使用されます。例: Open AI Assistant Dialog
  3. ボタンを作成します:
    1. 作成したリージョンを右クリックし、コンテキスト・メニューから「ボタンの作成」を選択します。
      ページ・デザイナで、ボタン属性を編集します。
    2. 識別、ボタン名 - クリックされているボタンの参照に使用される名前を入力します。この名前はボタンの参照に使用されます。例: OPEN_AI_ASSISTANT
  4. ユーザーがボタンをクリックしたときに起動する動的アクションを作成します:
    1. 左ペインで「動的アクション」タブをクリックします。
    2. 「イベント」で、「クリック」を右クリックし、「動的アクションの作成」を選択します。

      左ペインに「新規」という名前の動的アクションが表示されます。プロパティ・エディタに動的アクション属性が表示されます。



  5. プロパティ・エディタで、動的アクション属性を編集します:
    1. 指定、名前 - 動的アクションの名前を入力します。例: Open AI Assistant Click
    2. 時期、イベント - 動的アクションを起動するイベントを指定します。この例では、デフォルトの「クリック」を受け入れます
    3. 時期、選択タイプ - イベントのトリガーに使用するページ要素または構成体のタイプを選択します。この例では、「ボタン」を選択します。
    4. タイミング、ボタン - イベントをトリガーするページ要素または構成体のタイプを選択します。この例では、以前に作成したボタンOPEN_AI_ASSISTANTを選択します。
  6. Trueアクション「表示」を編集します。「動的アクション」タブで、「表示」アクションをクリックします。

    プロパティ・エディタにアクション属性が表示されます。

  7. 識別、アクション - 実行するアクションを選択します。

    この例では、「Open AIアシスタント」を選択します。



  8. 生成AI属性:
    1. 生成AI、サービス - AIアシスタントで使用される生成AIサービスを選択します。「アプリケーション・デフォルト」では、「AI」ページのアプリケーション属性で指定した生成AIサービスが使用されます。「アプリケーションのAI属性の構成」を参照してください。
    2. 生成AI、システム・プロンプト - AIアシスタントで使用されるシステム・プロンプトを指定します。システム・プロンプトは、AIにコンテキストを提供します。このメッセージはフロント・エンドには表示されませんが、バックエンドのすべてのAIサービス・リクエストに送信されます。

      テキストを入力するか、この属性を「最初のプロンプト」とともに使用して、アプリケーション・アイテム、ページ・アイテムまたはシステム変数を使用して置換を使用できます。

    3. 生成AI、ようこそメッセージ - AIアシスタントで表示されるオプションのようこそメッセージを指定します。例: How may I help you today?

      この属性は、アプリケーション・アイテム、ページ・アイテムまたはシステム変数を使用した置換もサポートします

  9. 外観属性:
    1. 外観、表示形式 - AIアシスタントをページにどのように表示するかを選択します。オプションには、「ダイアログ」または「インライン」があります。

      この例では、「ダイアログ」を選択します。

      選択に応じてUIが変更されたことに注意してください。

    2. 外観、タイトル - 「表示形式」「ダイアログ」の場合にのみ表示されます。ダイアログに表示されるタイトルを入力します。例: Customer Support
  10. クイック・アクション、メッセージ- チャット全体のクイック・アクションとして機能するメッセージを入力します。クイック・アクションは事前に定義されている語句で、クリックすると、ユーザー・メッセージとして送信されます。例: I need help with an order?
  11. ページを表示します。「ページの保存と実行」をクリックします。
    ページが表示されます。
  12. 「Open AIアシスタント」ボタンをクリックします。

    Open AIアシスタントが表示されます。



17.7.4.4 給与を提案するAIアシスタントの作成

給与推奨を提案するAIアシスタントを作成します。

このトピックの例では、従業員の給与推奨を提供するAIアシスタントを作成する方法について説明します。この例では、次のタスクを完了していることを前提としています:

  • EMP/DEPTサンプル・データセットで使用可能なEMP表にアクセスできます。さらに学習するには、『Oracle APEX SQLワークショップ・ガイド』「サンプル・データセットの使用」を参照してください
  • Employeesという名前の対話モード・レポートと、Edit Employeeという名前のフォーム・ページをEMP表に作成します。「対話モード・レポートの管理」を参照してください。

給与推奨を提案するAIアシスタントを作成するには:

  1. ページ・デザイナでフォーム・ページを表示します:
    1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
    2. アプリケーションを選択します。
    3. フォーム・ページEdit Employeeを選択します。
      ページ・デザイナでフォーム・ページが表示されます。
  2. フォーム・ページで、SUGGEST_SALARYという名前のボタンを追加します:
    1. 「Edit Employee」リージョンを右クリックし、「ボタンの作成」を選択します。

      プロパティ・エディタで、ボタン属性を編集します。

    2. 識別、ボタン名 - ボタンの参照に使用される名前を入力します。たとえば、次のように入力します:
      SUGGEST_SALARY
    3. ボタン位置を変更して、給与(P3_SAL)の右側に表示されるようにします。

      ヒント:

      ボタン属性を編集したり、ボタンを「レイアウト」ペインの適切な場所にドラッグ・アンド・ドロップできます。
      • レイアウト、順序 - このアイテムの表示順序を入力します。60と入力します

      • レイアウト、新規行の開始 - 「新規行の開始」を無効にします。

        「新規列」が有効になりました。



    4. 外観、ボタン・テンプレート - 「アイコン付きテキスト」を選択します。
    5. 外観、ホット - 「ホット」を有効にします。
    6. 外観、テンプレート・オプション - 「テンプレート・デフォルトの使用」をクリックします。「テンプレート・オプション」ダイアログで、次を構成します:
      • 共通、サイズ - 「大」を選択します。
      • 共通、幅 - 「拡張」を選択します。
      • 詳細、上部の間隔 - 「大」を選択します。
      • 「OK」をクリックします。
    7. 外観、アイコン - 「fa-robot」を選択します。
    8. 動作、アクション- 「動的アクションで定義」を選択します。
    9. 動作、検証の実行 - 「検証の実行」を無効にします。
    10. 「保存」をクリックします。
  3. P3_DEPARTMENTという名前の非表示アイテムを追加します:
    1. 「Edit Employee」リージョンを右クリックし、「ページ・アイテムの作成」を選択します

      プロパティ・エディタで、ページ・アイテム属性を編集します。

    2. 識別、名前 - アイテム名を入力します。たとえば、次のように入力します:
      P3_DEPARTMENT
    3. 指定、タイプ - 「非表示」を選択します。
    4. 「保存」をクリックします。
  4. 部門名を取得するための計算を作成します:
    1. P3_DEPARTMENTを右クリックして、「計算の作成」を選択します。

      プロパティ・エディタで、計算属性を編集します。

    2. 計算、タイプ - 「SQL問合せ(単一の値を返す)」を選択します。
    3. 計算、SQL問合せ - 次を入力します:
      select dname
        from dept
       where deptno = :P3_DEPTNO
    4. 「保存」をクリックします。
  5. P3_INIT_PROMPTという名前の非表示アイテムを追加します:
    1. 「Edit Employee」リージョンを右クリックし、「ページ・アイテムの作成」を選択します

      プロパティ・エディタで、ページ・アイテム属性を編集します。

    2. 識別、名前 - アイテム名を入力します。たとえば、次のように入力します:
      P3_INIT_PROMPT
    3. 指定、タイプ - 「非表示」を選択します。
  6. P3_INIT_PROMPTに対して計算を作成します:
    1. P3_INIT_PROMPTを右クリックして、「計算の作成」を選択します。

      プロパティ・エディタで、計算属性を編集します。

    2. 計算、タイプ - 「静的値」を選択します。
    3. 計算、静的値 - 次を入力します:
      Department: &P3_DEPARTMENT. Current salary: &P3_SAL.
    4. 「保存」をクリックします。
  7. ユーザーがSUGGEST_SALARYボタンをクリックすると起動する動的アクションを作成します:
    1. 左ペインで「動的アクション」タブをクリックします。
    2. 「クリック」を右クリックし、「動的アクションの作成」を選択します。
      左ペインに「新規」という名前の動的アクションが表示されます。プロパティ・エディタに動的アクション属性が表示されます。
  8. プロパティ・エディタで、動的アクション属性を編集します:
    1. 指定、名前 - 動的アクションの名前を入力します。たとえば、次のように入力します:
      AI: Suggest Salary
    2. タイミング、イベント - 動的アクションを起動するイベントを指定します。デフォルトの「クリック」を受け入れます。
    3. タイミング、選択タイプ - イベントをトリガーするページ要素または構成体を指定します。たとえば、「ボタン」を選択します。
    4. タイミング、ボタン - 動的アクションをトリガーするボタンを指定します。SUGGEST_SALARYを選択します。
  9. Trueアクション「表示」を編集します。「動的アクション」タブで、「表示」アクションをクリックします。

    プロパティ・エディタでアクション属性を編集します。

  10. 識別、アクション - 「Open AIアシスタント」を選択します。
  11. 生成AI属性を構成します:
    1. 生成AI、サービス - AIアシスタントで使用される生成AIサービスを選択します。「アプリケーション・デフォルト」では、「AI」ページのアプリケーション属性で指定した生成AIサービスが使用されます。「アプリケーションのAI属性の構成」を参照してください。
    2. 生成AI、システム・プロンプト - システム・プロンプトは、AIにコンテキストを提供します。このメッセージはフロント・エンドには表示されませんが、バックエンドのすべてのAIサービス・リクエストに送信されます。

      この属性は、「最初のプロンプト」とともに使用します。

      次のように入力します。

      You are an HR manager who provides suggestions for salary raises of employees.
      Based on the department the percentage of the increase differs.
      
      Here is the list of departments and the increase percentage values:
      - ACCOUNTING 5%
      - OPERATIONS 7%
      - RESEARCH 10%
      - SALES 3%
      
      You will get the department information and the current salary of an employee.
      Based on these information you will calculate a new salary.
      
      The calculated salary should be displayed without special characters and currency symbols. Also round decimal numbers to the next highest integer. Answer in complete but short sentences containing the calculated salary.
      
      Only answer questions to salary suggestions and nothing else.
      If needed parameters like the department name or current base salary are missing, reply that you need more information to proceed.
    3. 生成AI、ようこそメッセージ - AIアシスタントで表示されるオプションのようこそメッセージを指定します。たとえば、次のように入力します:
      Hi. I'm your personal HR assistant. I can assist you in calculating salary raises.
  12. 外観属性を構成します:
    1. 外観、表示形式 - AIアシスタントをページにどのように表示するかを選択します。「ダイアログ」を選択します。
    2. 外観、タイトル - ダイアログに表示されるタイトルを入力します。

      次のように入力します。

      Personal HR Assistant
  13. 最初のプロンプト属性 - 最初のプロンプトは、ユーザーの観点から見た最初のメッセージ/コンテキストです:
    1. 最初のプロンプト、タイプ - 「アイテム」を選択します。

      この属性は、AIアシスタントが応答を返す方法を決定します。AIアシスタントに送信する最初のプロンプトのタイプを選択します。最初のプロンプトではメッセージが、ユーザーが送信したものであるかのように表示されます。これは、特定のアイテム値でも、JavaScript式から導出した値でもかまいません。

    2. 最初のプロンプト、アイテム - 最初のプロンプトの設定に使用するページ・アイテムを入力します。

      P3_INIT_PROMPTを選択します。

    3. 最初のプロンプト、即時アクション・プロンプト - 最初のプロンプトと一緒に使用して、AIで即時に生成されるエンド・ユーザー向けのレスポンスを表示するためのプロンプトを入力します。

      次のように入力します。

      Calculate the salary suggestion
  14. レスポンスの使用 - 回答(またはAIメッセージ)の内容を返します。この例では、ページ・アイテムを指定します。
    1. レスポンスの使用、タイプ - AIアシスタントがレスポンスを返す方法を決定します。「アイテム」を選択します。
    2. レスポンスの使用、アイテム - P3_SALを選択します。
    3. レスポンスの使用、ボタン・ラベル - メッセージ・アクション・ボタンのラベルを指定します。これは、指定されたターゲットへのレスポンスの送信に使用されます。次のように入力します。
      Apply suggestion
    4. レスポンスの使用、JavaScript検出式 - メッセージ内の特定の基準を検索するJavaScript式を入力します。この式は、レスポンスに使用されるテキストを返します。次のコードを入力します:
      // search for numbers with a length of 3-5 and just return the number if one is found
      this.fullContent.match( /\b\d{3,5}\b/g ) ? this.fullContent.match( /\b\d{3,5}\b/g )[0] : ""
  15. 「保存」をクリックします。
  16. 変更内容をテストします:
    1. 「Employees」ページに戻り、ページを実行します。
    2. 従業員を検索し、「編集」アイコンをクリックして「Edit Employee」フォームを表示します。

      「Edit Employee」フォームが表示されます。



      Clarkの給与は2450であることに注意してください。

      「Edit Employee」フォームが表示されます。
    3. 給与の提案をクリックします。

      個人HRアシスタントが表示されます。



    4. 提案の適用をクリックします。

      従業員の給与が2573でないことに注意してください。

    5. 「変更の適用」をクリックして変更を受け入れ、フォームを終了します。