Dialogflowの基礎解説(ダイエット系AIチャットボットアプリの開発)#GoogleCloudNext
Dialogflowとは
2つのエディション
DialogflowにはDialogflow ESとDialogflow CXというように、2つのエディションにわかれています。
エディションの比較をイメージでお伝えすると、Dialogflow ESは小規模〜中規模の開発に、Dialogflow CXは大規模な開発に適しているようです。
詳しくはこちらのページにてご確認ください。
https://cloud.google.com/dialogflow/docs/editions?hl=ja
そして今回は、無料の範囲でチャットボットアプリを作成したいので、Dialogflow ESを使用します。
基本的には、コードの記述などを必要としないサーバレスで提供されているサービスです。コンソール画面の使い方を説明するDialogflow入門編というようなニュアンスでブログにしていきます。
エディションの比較抜粋
Dialogflow Essentials (ES) Edition は、標準の ES エージェント タイプを提供する従量課金制のエディションです。このエディションでは、本番環境に対応した割り当てと Google Cloud サポートによるサポートが提供されます。
Dialogflow Customer Experience (CX) Edition は、高度な CX エージェント タイプを提供する従量課金制のエディションです。CX Edition では、本番環境に対応した割り当てと Google Cloud サポートによるサポートが提供されます。
※無料のTrial EditionはDialogflow ESに含まれています
Google Cloud Next'23のセッション
ちなみに今回の背景として、Google Cloud Next'23のセッションがきっかけでDialogflowの記事を書こうと思いました。
「Streamline workflows with Google Chat integrations and interoperability」というタイトルのセッションでは、Dialogflowに直接触れている訳ではありませんが、Google Chatのプロダクトマネージャー含む3名が、チャットの機能や使い方などを詳しく解説してくれます。
その中で、実際にAIチャットを自作する場合には、どのような過程が必要なのか?と疑問に思い調査したところDialogflowという、基本GUI操作でAIチャットボットが作成可能なサービスを発見しました。
誰でもAIチャットボットの作成に挑戦できるサービスであるので、気になっていた方はぜひこのブログをきっかけに触ってみてください。
管理画面の解説(Dialogflow ES)
こちらのプルダウンは、どのローケーションにサーバーを配置するかを決めるものです。
企業にクラウドを使用する時のポリシーやGoogle Cloudの組織ポリシーで東京リージョン以外のリソースの作成は禁止としている場合などには、グローバルは避けなければなりません。
ただ、そういった制約がなければグローバルがおすすめです。(特定リージョンでは使用できない機能などがある)
Dialogflowの基本としては、まずはエージェントとインテントという単位でサービスを作成していきます。
- エージェント
- その目的のチャットボットの1つの単位。ダイエット系のチャットボットアプリを作成したいのであれば、エージェント名はBodyMakeBotなどになる
- インテント
- エージェントがどのように挙動するかを定義していく仕組み。インテントの中身は別途、色々と作成していくフェーズが存在する
- エンティティ
- その文字列を識別するための設定で、ある程度の言葉の差異を緩衝してくれるもの
主にインテントとエンティティを設定することでチャットボットを作成していきます。
エージェントとインテントの作成
エージェントの作成
設定内容は下記になります。
- ①エージェントの名前:BodyMakeBot
- ②使用する言語:ja(日本語)
- ③タイムゾーン:Tokyo
- ④使用するプロジェクト:プロジェクトID
- ⑤SetMegaAgent:OFF 複数のエージェントを跨いで1つのチャットボットを作成
インテントの作成
Create Intentを押下後、インテントの名前を決めて、最低限必要なTraining phrasesとResponsesを設定していきます。
インテント名
名前には主にそのインテントの目的を使用します。
例えば、筋トレ系のチャットボットアプリを作成するのであれば、まずはダイエットする方法を知りたいのようなインテントを作成していきます。
Training phrases
Training phrasesには、想定するユーザーからの質問を列挙していきます。
個数は15~20個ほどあればおおよその質問をカバーできそうです。
ユーザーの質問と全く同じフレーズにしなければいけない、ということではなく、ある程度同じニュアンスの質問はTraining phrasesに入れた言葉として拾ってくれます。(ただし、実際にその時に動かしてみないと精度は不明)
今回は、ユーザーがアプリをインストールして、まず初めに聞くことを想定して列挙しました。
この辺りは、トレーナー時代によく聞かれた事を参考にしてみました。
また、薄いピンクでダイエットという単語にマーカーがついていますが、こちらはSystem Entityというもので、単語を識別し、Entityに紐づけてくれます。(詳細は後述)
Response
先程、いくつかユーザーからの質問としてTraining phrasesを入力しましたが、それに対するチャットボットからの回答を定義します。
ユーザーはダイエットがしたい、痩せたい、リバウンドしない方法を教えてなどのように、さまざまな言い方で質問してくることでしょう。
しかし、まず初めにそのようなニーズを解決するためにトレーナーとして何を把握するべきでしょうか?
それは、「身長」「体重」、「性別」のヒアリングが重要になってきます。
その他、運動歴や怪我や持病の有無、現在服用されている薬なども大事ですが、その辺りは後ほど別のインテントとして作成しようと思います。
よって、痩せたい、ダイエットしたいなどのありふれた質問がきた場合、「身長」「体重」、「性別」を聞き返すResponseを設定していきます。
今回はText Responseとして、文字ベースでの返答を設定していきます。
ご質問いただきありがとマッスルです。体重を減らしたい(体脂肪を減らす)とのことですが、まず初めに「身長〇〇cm、体重〇〇kg、性別男」のような形式で各数値と性別を教えてください。この情報を知る事で、私がBMI値を計算します。
ちなみに、下記の画像のようにText Responseに複数の値を入れると、ユーザーへの回答がその中からランダムな形で選ばれます。
Entities
Custom EntitiesとSystem Entitiesが存在します。
先ほど説明したように、ユーザーから入力された値や言葉を1つの意味として、広い範囲で拾うために設定します。
下記の画像では、Custom Entitiesを設定していますが、ユーザーが性別の入力を行う際に「男」「男性」、「女」「女性」などのように人により書き方が異なってきます。
それらを全て「男」「女」のように理解するように設定しています。
テスト
Dialogflowでは、コンソール画面内で簡単にテストを行うことが可能です。
これによりTraining phrasesとResponseを入力した場合、すぐに反映されている内容を確認することができます。
Training phrasesの内容がうまくDialogflowで拾われない場合、予想していた返答が返されない場合が結構あるので、随時テストしながら構築を進めましょう。
まとめ
今回はDialogflowの基本操作について解説しました。
今後は、Webhook機能などを使用して、より濃い内容を返答できるダイエット系のチャットボットアプリを作成していきたいと思います。
さいごに
オリジナルな筋トレチャットボットが必要な理由
Google BardやChat GPTでもダイエット系の質問は十分可能です。
ですが、よりトレーナーの経験則に沿ったアドバスと顧客ごとの個人の特徴を踏まえた上でダイエットプログラムは組まないといけません。
やはり、いくつかダイエットの質問をGoogle BardやChat GPTにしても、人間のトレーナーのような高度な回答はない印象があります。(基本的な知識の補充にはとても最適です)
もしトレーナー自身の経験と思考をある程度反映させられるようなチャットボットアプリが作成できれば、皆様のダイエット人生に有益な情報がお届けできると思っています。