Vertex AI Conversation と Dialogflowで実現するお手軽生成AIチャットボット
この記事は Google Cloud Japan Advent Calendar 2023 (入門編) の 15 日目の記事です。
皆さんこんにちは。Google Cloudの玉井と申します。普段はパートナーエンジニアとして、Google Cloudの再販や構築をされているパートナー企業様を、技術的な観点でご支援させていただいています。
さて、今回はVertex AI ConversationとDialogflowを活用して『ユーザーのデータに基づいて回答してくれる生成AIチャットボット』を手軽に構築する方法を、実際にサンプルのチャットボットを構築しながらご紹介していきたいと思います。
今年最も注目された技術トピックの一つが生成AIですが、生成AIのユースケースとして挙げられることが最も多いものの一つが『生成AIを搭載したチャットボットを活用した業務の効率化』です。今回ご紹介するVertex AI ConversationとDialogflowを利用いただくことで、生成AIを搭載したチャットボットの仕組みを誰でも簡単に構築する事が可能です。
今回利用するプロダクトの概要ご紹介
Vertex AI Search and Conversation
Vertex AI Search and Conversation は機械学習の専門知識がない開発者の方でも、Google の生成AI技術を活用したアプリケーションをローコードで作成できるプロダクトです。
- Vertex AI Search and Conversation は以下の機能から構成されています。
- Vertex AI Conversation: 自然言語処理 (NLP) 技術を使用した会話型 AI インターフェースを構築し、ユーザーと双方向のコミュニケーションを実現する生成AIエージェントを構築する機能です。
Vertex AI Search: Google の生成AI技術と高度な検索技術を活用して、組織内の情報の中からユーザーが必要とする情報を効率的に見つけ出す事が可能な検索アプリを構築する機能です。
中でも今回はVertex Conversationを利用した生成AIチャットボットについてご紹介します。
Dialogflow
自然言語処理を搭載したチャットボットをノーコード/ローコードで構築する事ができるプロダクトです。これまでのDialogflowは、予めユーザーの意図(インテント)を想定して会話のフローを設計する、言わばルールベースのチャットボットを構築するツールでしたが、Vertex AI Conversation の登場により、予めインテントやフローを設計せずとも、ユーザーデータに基づき問い合わせに柔軟に回答可能な生成AIエージェントを構築することができるようになりました。また、Dialogflowを利用すれば旧来のルールベースのチャットボットのフローの一部にVertex AI Conversationで作成した生成AIエージェントを組み込むこともできるため、ルールベースの持つ「確実さ」と、生成AIエージェントの持つ「柔軟さ」を掛け合わせてより幅広いユースケースに対応できるようになりました。
今回構築する構成
今回はGoogle Cloudのサポートに関する質問に、公式ドキュメントの内容に基づいて回答してくれる生成AIチャットボットを構築します。構成のイメージは下記の通りです。
今回の構成イメージ
チャットボットを構築した後は、Dialogflowのテスト用UIを用いて作成した生成AIエージェントの挙動を確認していきたいと思います。
それでは、ここからは具体的な構築の手順を見ていきましょう!
構築の手順
ソースデータの準備
まずは生成AIエージェントが回答の根拠として参照するデータを準備します。
Vertex AI Conversationで作成する生成AIエージェントは下記の格納先/形式のデータを参照させることが可能です。
データストアタイプ | サポートされているフォーマット | サンプル例 | 取り込み方法フォーマット |
---|---|---|---|
Webサイト | html, pdf | www.example.com/* | collected from google search index |
非構造化データ | html, pdf | mydoc.pdf, private.html | uploaded through Cloud Storage bucket or BigQuery |
構造化データ | csv | "why?","why not" | uploaded through Cloud Storage bucket or BigQuery |
参考:Vertex AI Conversation data stores
今回はGoogle Cloudのサポートに関する公式ドキュメントを読み込ませたエージェントを作成しサポートに関する質問に回答させたいので、Google Cloudのカスタマーケアについて記載された公式ドキュメントをブラウザからPDF形式でダウンロードし、これをCloud Storageに格納していきます。(上記表中の真ん中の行の方法)
なお、Webサイトを参照するエージェントを作成する場合は、直接WebサイトをクローリングしてVertex AI Conversationのエージェントに取り込むこともできますが、その場合は当該Webページを自身が所有していることを証明するためにドメイン認証が必要となります。(今回はドメイン認証を避けるためにWebページをあらかじめPDFとしてダウンロードし、Cloud Storageに格納する方法を利用します。)
下記が今回利用する公式ドキュメントの一覧です。
Cloud Storage バケットの作成
Google Cloud ConsoleにてCloud Storageの管理画面へアクセスし、画面上部にある作成ボタンからバケットの作成画面へ遷移します。
Cloud Storageの管理画面
任意のバケット名を入力し、それ以外はデフォルト値のまま画面下部の作成ボタンを押下します。
今回バケットには、「genai-sample20231215」という名前を付けています。
Cloud Storage バケット作成ウィザード
「公開アクセスの防止」に関するポップアップが出てきますが、そのまま確認ボタンを押下します。
「公開アクセス防止」のポップアップ
バケットの管理画面へ自動で遷移し、指定したバケットが作成されていることが確認できれば本ステップは完了です。
先ほど入力したバケット名が表示されれば作成完了
作成したバケットへソースデータをアップロード
先ほど作成したバケットに対して、あらかじめ用意したソースデータとなるPDFをローカルからアップロードしていきます。先ほどのバケット管理画面から、「ファイルをアップロード」を押下し、当該PDFを選択していきます。
バケット管理画面に指定したPDFが表示されれば本ステップは完了です。
今回利用する公式ドキュメントのPDFのアップロードが完了した様子
Vertex AI Conversationにて生成AIエージェントを作成
Google Cloud ConsoleにてVertex AI Search & Conversationの画面へアクセスし、「新しいアプリ」を押下します。
Vertex AI Search & Conversationの画面(メニュー上は「検索と会話」という名称)
作成するアプリケーションの種類を選択する画面が表示されますが、今回は「チャット」を選択します。
アプリケーション種類の選択画面
作成するエージェントの設定画面が表示されるので、Dialogflow APIセクションの「APIを有効化する」を押下します。
「API有効化」前の設定画面
APIを有効化後、会社名とエージェント名のフィールドを任意の名称で設定します。今回は下記の名称でそれぞれを設定します。
- 会社名:Sample Company
- エージェント名:Sample-genaiagent
「API有効化」後の設定画面。会社名とエージェント名を任意の名称で設定する。
また会社名を入力するフィールドの下部にある「タイムゾーンと言語を表示」を押下し、タイムゾーンとデフォルトの言語をそれぞれ下記の通り設定します。それ以外の設定項目はデフォルトのまま、画面下部の続行を押下します。
- タイムゾーン:(GMT+9:00) Asia/Tokyo
- デフォルトの言語:ja - Japanese
生成AIエージェントのタイムゾーンと言語を設定
続いて、「CREATE NEW DATA STORE」を押下し、今回作成する生成AIエージェントが回答生成に利用するデータストアの設定画面へ遷移する。
「CREATE NEW DATA STORE」を押下
データソースの選択画面が表示されるが、今回はGCS内に格納したPDFファイルを利用するので、「Cloud Storage」を選択する。
データソースの選択画面
データソースとして指定するGCSバケットを指定する画面が表示されるので、先にPDFをアップロードしたバケットを選択する。(今回の例では「genai-sample20231215」)
また扱うデータの種類を選択するフィールドについて、今回はPDFを利用するため「非構造化ドキュメント」を選択する。
データソースの設定画面
データストア名を入力する画面が表示されるので、任意の名称を入力する。今回は「sample-genaiagent-datastore」と入力。
最後に、作成したデータストアを選択し、「作成」ボタンを押下します。
作成ボタン押下後、裏側ではデータストアに対してデータソースをインデックスする作業が行われますが、このあとの手順に進むためにはインデックス作業の完了を待つ必要があります。作成したデータストア名をクリックすると、下記のようにデータストアの詳細が確認できる画面に遷移しインデックスの状況を確認できます。
データストアの詳細確認画面
上記のように「前回のドキュメントのインポート」欄に緑色のチェックマークがついていれば、本ステップは完了です。
Dialogflowにて作成した生成AIエージェントを試す
冒頭にお伝えしたとおり、Verex AI Conversationで作成した生成AIエージェントはDialogflowを通じて呼び出す事ができます。
Vertex AI Conversationの先ほどの画面から、画面左手の「プレビュー」を押下し、Dialogflowのコンソール画面に遷移します。
画面左手の「プレビュー」を押下します
遷移すると、このようにDialogflowのコンソール画面が表示されます
Dialogflowコンソール画面の右上にある「Test Agent」を押下します。
右端のTest Agentを押下します
画面右端に、確認用のチャットインターフェースが表示されます。ここに、チャットボットに対する質問を投げてみます。まずは簡単な挨拶を入力してみると下記のような返答が返ってきます。
挨拶を入力した例。Vertex AI Conversationの設定時に入力した会社名はこのような形で活用されます。
続いて、あらかじめ用意したPDFドキュメントに関連する内容を質問してみます。今回はGoogle Cloudのカスタマーケアに関するドキュメントを利用しているので、サポートメニューに関する質問を投げたところ下記のような返答が返ってきました。
プレミアムサポートについて問い合わせた例
サポートメニューの違いを問い合わせた例。きちんとメニューが比較されているドキュメントを参照先として提示してくれています
このように、データストアとして登録したドキュメントを踏まえて回答してくれる事がわかりました。念の為、データストアに登録していない内容についても質問してみます。試しにBigQueryについて聞いてみた結果が下記になります。
BigQueryについて問い合わせた例
このように、Vertex AI Conversationで作成した生成AIエージェントでは、データストアに登録したデータに含まれない情報は回答が返さないという挙動をとります。
まとめ
いかがだったでしょうか。このようにVertex AI ConversationとDialogflowを組み合わせることによって、ユーザーデータに基づいて回答を生成するチャットボットを手軽に構築する事が可能です。Vertex AI Conversationはリリースしたばかりの製品のため、作成したエージェントが生成する回答の挙動を細かくチューニングが出来ない等一部課題となりうる点もありますが、その辺りも含め今後のアップデートに是非ご期待いただければと思います。
Discussion