コンテンツに移動
AI & 機械学習

生成 AI を使用して対話型 AI サービスを構築し、従業員の生産性を向上させる方法

2023年10月31日
https://storage.googleapis.com/gweb-cloudblog-publish/images/easytouse_2022.max-2500x2500.jpg
Google Cloud Japan Team

※この投稿は米国時間 2023 年 10 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。

非営利、公的、民間を問わずどのような大組織でもフラストレーションの主な原因となるのが、組織内の個人やチームが、社内(イントラネット上)や社外(ウェブ上)で適切な情報をなかなか見つけられないことです。従業員は、日常業務に関するさまざまな不明な点について、イントラネットやウェブから適切な情報を見つけようとして、かなりの時間を浪費してしまうことがあります。また、答えを求めているトピックについてサポートしてくれる、適切な社内の専門家がなかなか見つからないこともあります。

Google Cloud の生成 AI 機能により、企業は Google の最高水準の会話機能と検索機能を活用して、この課題に対処できるようになりました。Google Cloud の生成 AI 機能を Dialogflow で使用すると、従業員が社内外のナレッジベースから関連性の高い情報を取得できる、リアルな対話型 AI エージェントを作成できます。Dialogflow の生成 AI 機能は、大規模言語モデル(LLM)によりユーザーとの自然言語でのやり取りを実現し、Google Enterprise Search を使用してナレッジベースのコンテキストに基づく回答を導き出します。ナレッジベースは、構造化データと非構造化データの両方で構成されます。

この後のセクションでは、社外向けウェブサイトと社内向け FAQ ナレッジベースに掲載されている、HR の福利厚生に関する質問を処理するチャット サービスの構築方法の例をご紹介します。また、ユーザーは特定の状況について人間の HR 担当者に相談しなければならない場合があるため、Dialogflow の仮想エージェントは会話のトピックに基づいて適切な HR 担当者を見つけ出し、その後さらに Calendar API を呼び出して予約を取ることができます。この例のコア コンポーネントは以下のとおりです。

  1. 生成 AI エージェント: 生成機能を使用します。エージェントを使用すると、リアルなチャットまたは音声サービスを数分で作成できます。会話での返答は、ユーザーが提供するナレッジベースに基づいて生成されます。
  2. ハンドブック: ハンドブックは、仮想エージェントが実行するフローとタスクを構築するための生成エージェント デザイナーです。ハンドブックは、自然言語で記述した命令に基づいて簡単に設計、作成できます。
  3. Webhook: ビジネス ロジックをホストしたり、他のサービスや API などを呼び出したりするサービスです。
  4. インテントとルート: インテントは、1 つの会話ターンに対するエンドユーザーの意図を分類します。ルートは、フローと会話の間のつながりです。インテントを使用して、会話を適切なフローにルーティングします。

生成 AI を使用して chatbot を構築し、従業員の生産性を向上させる

利用するには、いくつかの簡単なステップを実行します。まず Vertex AI Conversation コンソールにアクセスし、データストア / ナレッジベースを構築します。次に、マルチターンの会話を扱うトランザクション エージェントを作成し、Dialogflow を使用して外部 API を呼び出します。詳しい手順に入る前に、生成 AI を使用して対話型 AI サービスを作成したユースケースを見てみましょう。

概要

ミランダさんは最近、従業員 500 人の会社に入社しました。福利厚生、報酬、勤務評価など、組織のさまざまな部分を理解するのに何時間もかかっています。会社のウェブポータル内で、適切な情報と担当者を素早く見つけてくれる、まるで人間のような仮想エージェントを使用できれば便利です。このユースケースは、どのような業界や組織にも当てはまります。ミランダさんのユーザー ジャーニーは以下のとおりです。

新入社員として、ミランダさんは以下のことを知りたいと考えています。

  1. 新入社員として福利厚生に加入する方法。たとえば、提供する必要がある情報や使用できる社内ツールなど。
  2. 利用できる各種の福利厚生オプション。
  3. 扶養家族を歯科保険などの福利厚生に加える方法。
  4. 福利厚生と加入を更新するために必要な手順。

また、ミランダさんは自分の報酬モデルはどうなっているのか、自分の業績は今後の報酬にどう影響するのかを理解するため、HR 担当者との対面での相談も望んでいます。

リファレンス アーキテクチャ

https://storage.googleapis.com/gweb-cloudblog-publish/images/2._Drive_employee_productivity_using_Gen_A.max-2200x2200_orgwbD0.jpg

ステップ 1: エージェント データストア(ナレッジベース)を作成する

  1. Vertex AI Conversation コンソールで、一般公開ウェブサイト、非構造化データ、構造化データなどのデータソースを使用してデータストアを作成します。
https://storage.googleapis.com/gweb-cloudblog-publish/images/3._Vertex_AI_Conversation_Console_Screensh.max-2200x2200.png

2. [Cloud Storage] に移動して「demo-better-employee-search」という名前のバケットを作成します。最後のステップが表示されるまで [続行] を選択し、バケットを [作成] します。

3. ドキュメントを Cloud Storage バケットにアップロードします。以下がサポートされています。

  • パブリック ドメインおよびウェブサイト用のテキスト / HTML
  • 限定公開ドキュメントおよびよくある質問ドキュメント用の HTML、PDF、CSV
https://storage.googleapis.com/gweb-cloudblog-publish/images/4._Cloud_Storage_Screenshot.max-900x900.png

4. Vertex AI Conversation コンソールに戻り、データストアにデータを追加します。データをアップロードできるオプションは 3 つです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5._Create_Data_Store.max-2200x2200.png
  • Cloud Storage(メタデータなし): ドキュメントを Cloud Storage バケットに保存します。
  • Cloud Storage(メタデータあり): ドキュメントへのリンクとメタデータを含む JSON を Cloud Storage バケットに保存します。
  • BigQuery(メタデータあり): ドキュメントへのリンクとメタデータを含むテーブルを BigQuery に保存します。
  • API: API を呼び出してデータをインポートします。

ステップ 2: データストアを使用して、よくある質問を処理する生成 AI エージェントを作成する

生成 AI エージェントは、組織のナレッジベースに基づいて質問に回答できるチャット サービスです。前のステップでデータストアを作成すると、Dialogflow CX コンソールが表示されます。[Test Agent] をクリックして仮想エージェントを試します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/6.Gen_AI_Agent_Screenshot.max-1300x1300.png

ステップ 3. HR トピックと HR 担当者をマッピングするハンドブックを作成する

会話は、生成 AI を利用したハンドブックによって分類されます。ハンドブックは、トピックと関連する会話のパスによって定義されます。たとえば、ピザ注文エージェントには、ピザの注文、顧客情報、支払いなどのハンドブック(フロー)があります。今回の仮想エージェントの設計では、ハンドブックからの命令を使って、HR トピックを HR 担当者にマッピングします。

ハンドブックは、インテントやトレーニング フレーズなどを使って構築する標準フローと異なり、自然言語で記述した命令に基づいて作成され、仮想エージェントのタスクを定義します。

このステップでは、命令を作成する前にまずパラメータを作成します。パラメータは、セッション中にエンドユーザーが入力した値を取得して参照するために使用します。各パラメータには名前とエンティティ タイプがあります。

  1. ユーザーデータの入力パラメータとして、hr_topics、hr_representative、appointment という 3 つのパラメータを作成します。入力パラメータは収集され、フローで利用可能になります。
https://storage.googleapis.com/gweb-cloudblog-publish/images/7._Playbook_-Parameter.max-1200x1200.png

2. 会話の中で予約枠を取得するために、@sys.date を収集する出力パラメータを作成します。入力パラメータは、ハンドブックから収集することを想定しています。

3. 命令を設定し、フローで行う処理を記述します。次に、$hr_topics と $hr_representative をマッピングするステップを指定します*。

https://storage.googleapis.com/gweb-cloudblog-publish/images/8._Playbook-_Instructions.max-1300x1300.png

*この機能は現在、許可リストに基づいて一般提供されています。

ステップ 4. フローをルーティングする

仮想エージェントを設計するには、物語を書くときにあらすじを作るのと同じように、インテントを指定してストーリーラインを構築します。ストーリーラインでは、以下を構築します。

  1. よくある質問と回答、ウェブサイト、限定公開のドキュメントなどを使用した確定フロー。このチュートリアルでは、確定フローを使用して「米国に住む従業員はどのような休暇オプションを利用できますか?」といった HR / 福利厚生に関連する質問に回答します(ステップ 2 を参照)。
  2. ユーザーの質問に答えたり、特定のトランザクションを完了させたりするトランザクション フロー(ステップ 3 を参照)。このチュートリアルでは、トランザクション フローを使って、ミランダさんが適切な HR 担当者を見つけてセッションをスケジュールできるようにします。
  3. 会話をルーティングするインテントやハンドブックの命令。

次のセクションでは、会話をルーティングするインテントを作成する方法について学びます。

インテントは、会話中のエンドユーザーの意図を分類したもので、主インテントと補足インテントに分類されます。主インテントは、エージェントと対話しているユーザーの主な目的を特定し、補足インテントは、ユーザーのその後の質問を特定します。たとえば、ピザ注文仮想エージェントの設計では、order.pizza は主インテントになり、confirm.order は主インテントに関連する補足インテントになります。インテントを特定したら、そのインテントをトリガーするトレーニング フレーズを追加できます。

このチュートリアルでは、redirect.schedule.appointment という主インテントを作成し、Default Start フローから MapRepresentative フローに会話をルーティングします。これは、「HR 担当者と話をしたい」といった発話によってトリガーされます。また、「そのスケジュールで大丈夫です」のようなユーザーの発話に対応する、確認の補足インテントも作成します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/9_Intent.max-1300x1300.png

ステップ 5. 予測フローと生成フローを組み合わせて会話を行う

会話ダイアログには複数の会話トピックが含まれます。Dialogflow では、規範となる具体的なインテントがある予測フローを、ハンドブックで作成された生成フローと組み合わせることができます。この例では、以下のような構造を構築します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/10._Flow_Structure.max-1100x1100.png
  1. デフォルトの開始フローは、データストア / ナレッジベースをホストし、インテントを適切なフローまたはハンドブックにルーティングします(ステップ 3 とステップ 5 を参照)。
  2. MapRepresentative ハンドブックを構築し、ユーザー トピックに基づいて適切な HR 担当者を見つけます(上記のステップ 4 を参照)。
  3. 適切な担当者を見つけるために会話をルーティングし、予約のために Calendar API を呼び出す FindRepresentative フローを作成します(Calendar API を呼び出す Webhook の作成方法については、下記のステップ 6 を参照)。
  4. ConfirmAppointment フローは、丁寧に会話を終わらせます。これもハンドブックです。

ステップ 6. Calendar API を呼び出す Webhook を作成する

このステップでは、仮想エージェントが HR 担当者の空き情報を確認し、Webhook を介して Calendar API と連携します。これは、Cloud Functions をデプロイすることで実現できます。

Cloud Functions で以下を行います。

1)index.js に Calendar API を呼び出すコードを入力します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/11._Cloud_Function_-index.js.max-1300x1300.png

2)package.json を指定します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/12._Cloud_Function_-_package.json.max-1400x1400.png

3)Cloud Functions をデプロイします。GitHub のこちらから、サンプルコードを確認できます。

4)Dialogflow で Webhook を構成します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/13._Webhook_Configruation.max-1200x1200.png

ベスト プラクティス

仮想エージェントを設計するのは簡単なことではありません。しっかりとした会話サービスを構築するためのベスト プラクティスをいくつかご紹介します。

  1. 技術的な設計を行う前に、会話のデータと階層を理解し、フローと主インテントを設計します。管理、費用、セキュリティなどの理由からインテント主導の設計が必要となるフローまたはフローの一部はどれか、生成 AI エージェントやハンドブックで対処できるものはどれかを判断します。
  2. フローは主要なトピックです。インテントはユーザーの意図であり、主要なトピックのハッピーパスを実現するために使用します。1 つのフロー内の主インテントを 1 つか 2 つに制限することで、複雑さを回避できます。
  3. 再利用できる補足インテントを構築します。可能であれば、異なるフロー間でインテントを再利用できるようにしてください。たとえば、「はい」、「もちろん」、「そのとおり」などの言い方をブレインストーミングする際は、異なるフローで複数のインテントを使うのではなく、補足インテント confirmation.yes 1 つを使うだけで実行できます。
  4. デフォルトのネガティブ インテントを使用して、最初から対象外の発話を削除します。たとえば、ピザ注文フローでは「夕食にチキンを焼くつもりです」は対象外の発話です。このような発話をデフォルトのネガティブ インテントに含めます。

まとめ

この例では、組織内外のナレッジベースに基づいてよくある質問に回答できる生成 AI を利用した仮想エージェントの作成方法をデモンストレーションしました。また、ユーザーが人間のエージェントや HR 担当者に相談したいと考えている場合は、自然言語を使ったエージェントを作成するなど、インテントと生成フローを組み合わせるアプローチを使用します。次に、Webhook と API 呼び出しを追加し、ユーザーのためにカレンダーの空き状況をチェックして、ミーティングをスケジュールしました。

リファレンス ドキュメント

-Google Could、生成 AI ソリューション アーキテクト Yan Sun

投稿先