10分で作るごみ分別検索bot
Vertex AI Agent Builderを使って、ごみの分別方法を教えてくれるチャットボットを作ってみました。私の住んでいる横浜市には「MIctionary」という分別方法を検索できるシステムがあるので、そのそっくりさんを10分で作ってみることにします。ついでなので、電話でも問い合わせできるようにしてみました。
Vertex AI AgentはLLM(おそらくGemini)を用いた会話型のUIを簡単に作ることができるサービスです。Vertex AI Agentはデータストアエージェントと呼ばれる特殊なDialogflow CXのエージェントを作成し、WebサイトやCloud Storageにアップロードしたデータにもとづいてレスポンスを提供することができます。
10分しかないのでサクサク作っていきましょう。
[事前準備] 分別データの作成
グラウンディング(RAG)用のデータをCloud Storageにアップロードしておきます。MIctionaryのサイトで分別方法をまとめたCSVファイル「ごみと資源物の出し方一覧表(令和5年11月更新)」が公開されているのでこれを利用します。オリジナルのCSVはShift-JISのようで、読み込み時にエラーが発生します。UTF-8に変換すると読み込みはできるようになりますが、非構造データとして読み込んでもbot用のQ&Aデータとして扱われてエラーになるため、PDF化しました。PDF化した分別データは、適当なバケットにアップロードしてください。
非構造データとしてCSVもサポートしてると書いてあるし、わざわざFAQデータではなく非構造データとしてインポートしようとしてると警告までしてくれているのに、実際に読み込むと所定のFAQデータの形式になってないのでエラーが発生しているようで、ちょっと不思議。
チャットアプリの作成
Vertex AI Agentのコンソールを開きましょう。初めてアクセスする場合は、APIを有効にする必要があります。
今回は「Chat」アプリを作成します。
Agent name
は好きな名前を指定してください。はじめてDialogflowを使用する場合はAPIを有効にする必要があります。APIを有効にするとCompany name
を聞かれますが、こちらも好きなもので構いません。
続いてデータストアを作成します。Webをクローリングすることもできますが、今回はCloud StorageにアップロードしたPDFファイルを使用します。
アップロードしたPDFファイルのパスを入力します。FILEを指定しないとプレフィックス扱いになるので注意してください。データの種類は非構造 (unstructured document) を選択します。
データストア名は何でも構いません。
ちょっとここのUIがわかりにくいのですが、作成したデータストアのラジオボタンを押すと、アプリの「CREATE」ボタンが押せるようになります。
データのインポートに5分くらいかかります。データストアのActivityタブでインポート状況を確認することができます。言語の設定をJapanese
にしておきます。
インポートが完了したら、作成したチャットアプリのPreviewを選択してDialogflow CXのコンソールを開きます。
画面右上の「Agent settings」を選択して「Language」タブを開き、Japanese
を追加したら「Save」します。
画面右上の「Test Agent」を選択するとシミュレータが起動するので、テストしてみましょう。
試しに「うさぎ小屋」と入れてみると粗大ゴミであることがわかりました。
「MIctionary」には、AIによって会話形式でごみの出し方を案内する「イーオのごみ分別案内」というサービスがあるのですがこれがちょっと残念な子で、10分で作ったbotも結構便利かもしれません。
電話での応対
Dialogflow CXのPhone Gatewayを使用するとエージェントとの電話I/Fが利用できるようになります。Dialogflow CXのコンソール画面左上にある「Manage」タブから「Integration」を選択するとPhone Gatewayとの統合を設定することができます。
番号の候補が表示されるので好きなものを選びます。なお、利用可能な番号は今の所米国の番号のみのようです。プロファイル名もご自由に。
内部的にはSpeech-to-Text (STT) やText-to-Speech (TTS) が使用されているようで、ドキュメントにもSSTとTTSの両方を提供する言語の全てをサポートしていると書かれているし、UI的にも日本語を選べそうなのですが、なぜか選択肢にEnglish -en
しか表示されませんでした。
プロファイルを作成したら、あとは電話をかけるだけです。自分はSkypeからコールしたので1コール10円くらいのお手頃価格で実験できました。電話口で"Rabbit hutch"というと、見事に”Rabbit hutches are considered bulky waste."と答えてくれました!
余談
作った後で気になってGeminiに聞いてみたところバッチリ正解でした。Gemini恐るべし。
Discussion