LoginSignup
6
3
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Oracle APEXの新機能、会話型AIダイアログを使ってチャットボットを実装してみた

Last updated at Posted at 2024-06-26

はじめに

新たにリリースされたOracle APEX24.1の新機能、会話型AIダイアログを使用して、簡単にアプリケーションにチャットボットを実装します。

会話型AIダイアログは、アプリに簡単に素早く実装できる会話型インターフェースです。エンド・ユーザーがアプリと自然言語で「会話」できるようにします。生成AIや自然言語処理コンポーネントを最初から構築せずに、アプリケーション内でよりリッチなエクスペリエンスを提供することができます。

本記事では、給与の提案をするAIアシスタントを作成し、アプリケーションに実装したいと思います。

【前提条件】

  • Oracle APEXのワークスペースが作成済みであること
    (ワークスペースの作成方法はこちらをご参照ください。)
  • 使用可能なOpenAI、若しくはCohereのAPIキーが作成済みであること
    (OpenAIのAPIキー取得方法はこちらをご参照ください。)

Oracle APEXの生成AIサービスは、2024年6月現在、OpenAIとCohereをAIプロバイダーとして使用することが出来ます。現時点ではOCI Genarative AIは、APEX_AIパッケージのみで使用可能です。

【所要時間】
20分程

1. 生成AIサービスの作成

APEXアシスタントの機能を使用するため、APEX上で生成AIサービスを作成します。

既にAPEX上で生成AIサービスを作成済みの場合は再度作成いただく必要はありません。2. サンプルアプリケーションの作成へスキップします。

  1. 作成したAPEXのワークスペースにログインし、アプリケーション・ビルダーをクリックします。
    1.png

  2. ワークスペース・ユーティリティをクリックします。
    2.png

  3. 生成AIをクリックします。
    3.png

  4. 作成をクリックし、生成AIサービスを作成します。
    4.png

  5. 以下の通りに記入し、作成をクリックします。

    • AIプロバイダ - OpenAI(CohereのAPIを使用する場合は、Cohereを選択します)
    • 名前 - 任意(本記事では、OpenAI Demoとしています)
    • アプリケーション・ビルダーで使用 - トグルをオン
    • APIキー - 取得したAPIキー
      5.png
  6. 生成AIサービスを作成する事が出来ました。
    image.png

2. サンプルアプリケーションの作成

APEXアシスタントの機能を試すために、アプリケーションとデータセットが必要です。

APEXのワークスペース上に、サンプルデータセットをロードし、新しいアプリケーションを作成します(既にEMP表、DEPT表をダウンロードし、アプリケーションを作成済みの場合は3. 会話型AIダイアログを実装してみるへスキップして下さい。)

  1. 画面上部の検索をクリックし、検索フィールドにサンプルと入力します。検索結果に表示されるサンプル・データセットをクリックします。
    21.png

  2. アプリケーションの作成に必要なデータをインストールします。本記事では、EMP/DEPTというサンプル・データセットをインストールします。インストールをクリックします。
    2.png

  3. 言語を日本語へ変更し、をクリックします。
    3.png

  4. データセットのインストールをクリックします。
    4.png

  5. データセットのインストールが終了しました。アプリケーションの作成をクリックします。
    5.png

  6. 設定はそのままにし、アプリケーションの作成をクリックします。
    6.png

  7. これで、アプリケーションの作成が終わりました。SQLワークショップをクリックし、インポートしたEMP表とDEPT表を確認します。
    7.png

  8. オブジェクト・ブラウザをクリックします。
    8.png

  9. 先程インポートしたEMP表とDEPT表が表示されています。それぞれの表にどの様なデータが格納されているか確認します。

    EMP表には従業員の氏名や職種、給与等の情報が格納されており、DEPT表には部署のID、名前、所在地が格納されている事が分かりました。また、EMP表のDEPTNOはDEPT表の主キーであるDEPTNOを参照している事が分かりました。

    データセットの確認が終わったら、アプリケーション・ビルダーへ戻ります。
    9.png

3. 会話型AIダイアログを実装してみる

生成AIサービス、サンプルアプリケーションの用意ができたので、会話型AIダイアログを実装してみましょう。

  1. 先ずは、チャットボットを実装するページを新規に作成します。ページの作成をクリックし、対話モード・レポートのページを追加します。
    1.png

  2. 対話モード・レポートを選択します。
    2.png

  3. 従業員一覧の対話モード・レポートを作成し、各従業員の給与を編集することの出来るフォーム・ページも作成します。以下の通りに入力します。

    • ページ定義
      • 名前 - 従業員の給与
      • フォーム・ページを含める - オン
      • フォーム・ページ名 - 給与編集
    • データ・ソース
      • 表/ビューの名前 - EMP(従業員の情報を表示させたいので、EMP表を選択します。)
        スクリーンショット 2024-06-25 110112.png
  4. ページの作成をクリックします。
    4.png

  5. ページが作成されました。保存と実行ボタンをクリックし、どの様なページが作成されたか確認します。
    5.png

  6. ワークスペースのユーザー名とパスワードを入力し、ログインします。
    6.png

  7. 従業員の名前、職種、給与、部署等の情報を一覧出来る対話モードレポートが作成されました。名前の隣にある編集アイコンをクリックします。
    7.png

  8. 従業員の情報を編集することのできる給与編集ページが表示されました。

    このページに、従業員の給与を上げる際に相談することが出来るチャットボットを実装します。画面下部のページ8をクリックし、給与編集ページを編集します。
    8.png

  9. 給与編集フォームをクリックし、ボタンの作成を選択します。
    9.png

  10. 作成したボタンを給与の隣に配置します。以下の通りに入力します。

    • 識別

      • ボタン名 - SUGGEST_SALARY
      • ラベル - 給与を提案
    • レイアウト

      • 順序 - 70(P8_SALの隣にボタンを表示させる様にレイアウトを調整します)
      • 新規行の開始 - オフ
        image.png
    • 外観

      • ボタン・テンプレート - Text with icon(作成したボタンに文字とアイコンの両方を表示させます。)
      • ホット - オン
    • 動作

      • アクション - 動的アクションで定義
      • 検証で実行 - オフ
        13.png
    • 外観

      • テンプレート・オプション
        • Size - Large
        • Width - Stretch
        • Spacing Top - Large
          11.png
    • 外観

      • アイコン - fa-robot(表示するアイコンを選択します。)
        12.png
  11. 給与編集フォームをクリックし、アイテムの作成をクリックします。
    14.png

  12. 以下の通りに入力し、画面上部の保存ボタンをクリックします。

    • 識別
      • 名前 - P8_DEPARTMENT(数字は編集しているページのページ番号に合わせて変更してください。ページ8の中にあるアイテムなので、P8としています。)
      • タイプ - 非表示
        15.png
  13. 作成したページ・アイテムP8_DEPARTMENTをクリックし、計算の作成をクリックします。
    16.png

  14. SQL問合せの欄に、以下のSQLクエリを記述します。先ほどと同様に、P8_DEPTNOの数字はページナンバーに合わせて変更します。

    select dname
    from dept
    where deptno = :P8_DEPTNO
    

    17.png

  15. 給与編集フォームをクリックし、アイテムの作成をクリックします。
    19.png

  16. 以下の通りに入力します。

    • 識別
      • 名前 - P8_INIT_PROMPT(数字は編集しているページのページ番号に合わせて変更してください。ページ8の中にあるアイテムなので、P8としています。)
      • タイプ - 非表示
        20.png
  17. 作成したページ・アイテムP8_INIT_PROMPTをクリックし、計算の作成をクリックします。
    21.png

  18. 以下の通りに入力します。

    • 計算
      • タイプ - 静的値
      • 静的値 - 下記の値を記入(数字は編集しているページのページ番号に合わせて変更してください。ページ8の中にあるアイテムなので、P8としています。)
      部署:&P8_DEPARTMENT. 現在の給与:&P8_SAL.
      

    image (1).png

  19. 動的アクションタブに移動し、イベントをクリックして動的アクションを作成します。
    23.png

  20. 作成した動的アクションのを編集し、ボタンをクリックすると動的アクションが実行されるように設定します。

    • 識別
      • 名前 - AI: Suggest Salary
    • タイミング
      • イベント - クリック
      • 選択タイプ - ボタン
      • ボタン - SUGGEST_SALARY
        24.png
  21. 表示というTrueアクションを編集し、ボタンがクリックされた時の動きを設定します。

    • 識別
      • アクション - Open AIアシスタント
    • 生成AI
      • サービス - OpenAI Demo(作成した生成AIサービスを選択します。)

      • システム・プロンプト - 以下のメッセージを入力(AIに文脈を伝えるために記入します。エンド・ユーザーには表示されません。)

      • ようこそメッセージ - こんにちは、私はHRアシスタントです。昇給の計算をお手伝いします。(チャットボットをユーザーが使う時に最初に表示されるメッセージとなります。)

          あなたは従業員の昇給を提案する人事マネージャーです。
          部署によって昇給率は異なります。
          
          以下は部署と昇給率の一覧です:
          - 会計 5%
          - 業務 7%
          - 研究開発 10%
          - セールス 3%
          
          従業員の部門情報と現在の給与を取得します。
          これらの情報に基づいて新しい給与を計算します。
          
          計算された給与は、特殊文字や通貨記号を使わずに表示する必要があります。
          また、小数点以下は四捨五入してください。計算した給与を含む完全で短い文章で回答してください。
          
          給与に関する質問にのみ回答し、それ以外の質問には回答しないでください。
          部署名や現在の基本給など、必要なパラメータが不足している場合は、続行するにはさらに情報が必要であると回答してください。
        

    100.png

    • 外観
      • タイトル - HRアシスタント
    • 最初のプロンプト
      • タイプ - アイテム
      • アイテム - P8_INIT_PROMPT
      • 即時アクション・プロンプト- 給与額の算出をして下さい。(入力したプロンプトを自動で入力し、送信します。)
        26.png
  22. 昇給させたい従業員を選択し、チャットボットにどのくらいの給与にすべきかアドバイスを求めます。

    上から2人目の石原さんの給与を上げたいと思います。名前の隣にある編集アイコンをクリックします。
    28.png

  23. 編集アイコンをクリックすると、給与編集のフォームが表示されます。

    先程作成した給与を提案ボタンをクリックし、従業員の所属している部署、現在の給与を基に、昇給額の算出をしてもらいます。
    image (2).png

  24. ボタンをクリックすると、HRアシスタントというチャットボットが開き、従業員の所属している部署、現在の給与を基に、昇給額の算出を自動で行います。

    人事部のスタッフはAIアシスタントのアドバイスを基に、昇給額を決定する事が出来ます。
    image (3).png

  25. APEX AIアシスタントが提案してくれた額である、1365と給与列を更新します。Salに1365と入力し、変更の適用をクリックします。
    image (4).png

  26. 石川さんの給与を更新する事が出来ました。
    image (5).png

本記事は以上です。他にも様々なチャットボットを作成してみて下さい。

参考資料

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3