こんにちは。KIYONOのエンジニアです。
今日はGoogle Cloudが提供するVertex AI Agent Builderというサービスについて概念や用語の説明をさせていただきます。
まだまだ、ドキュメントや記事が少ないサービスなので、少しでもお力になれれば幸いです!
Vertex AI Agent Builderとは
簡単にいうと、GCP上でAIエージェントを作成できるサービスです。
会話型 AI とプロセス自動化エージェントを設計、デプロイ、管理します。プロンプトベースのAgent Builder Toolsと事前構築済みのテンプレートを組み合わせることで、大量のコードを記述することなく、迅速なプロトタイピング、テスト、デプロイを実現できます。
Agent Builderを使用して作成できるアプリは多くの種類があります。
分類としては、
- 検索とアシスタント
- 会話エージェント
- レコメンデーション
があります。
今回はその中でも会話エージェントについて説明いたします。
会話エージェント(Dialogflow CX)とは
会話エージェント(Dialogflow CX)は、会話を制御できる生成モデルと、より明示的な会話制御に使用できるフローに基づいて構築された新しい自然言語理解プラットフォームです。
会話エージェント(Dialogflow CX)を使用すると、会話型のユーザー インターフェースを簡単に設計して、モバイルアプリ、ウェブ アプリケーションなどに統合できます。会話エージェント(Dialogflow CX)を使用すると、プロダクトを操作する新しい魅力的な方法をユーザーに提供できます。
フローの定義などはGUIで行えるため、簡単なチャットボットくらいであれば、ノーコードで作成・デプロイすることができる優れものです。
また、webhookを利用することで、APIを利用することができるため、アプリケーション内での柔軟なアクションを生成AIが実行することができます。
本記事ではDialogflow CXにおいて重要な概念について説明します。
- Flows
- Tools
- Datastore
Flowsとは
フロー
予想される会話にシナリオをあらかじめ定義しておき、会話ごとに処理を制御する仕組みです。
下記の例の場合、`Start`は「おはよう」「こんにちは」などの会話の始まりです。
その後、例えば、「注文をしていいですか?」などの注文に関する会話に切り替わると、エージェント側では「Edit Order」に移り変わります。
このようにユーザの入力に合わせて、エージェント側の挙動を制御する仕組みがフローです。
なぜこのようなフローを定義するのか。
AIエージェントは、生成AIのように単にテキストを生成するだけではなく、実際に「注文する」などの具体的なアクションを実行します。たとえば、ピザの注文を例にとると、以下のような段階が必要になります。
-
ユーザーに「どんな注文を希望するか」を尋ねる
-
ユーザーの回答に基づいて、ピザの注文リストにアイテムを追加する
-
追加されたメニューを確認し、最終的な注文内容を確定する
-
最後に、決済処理を行う
各段階で必要な処理や呼び出すツールが異なるため、これらのステップをあらかじめ明確に定義しておく必要があります。こうすることで、エージェントはユーザーの入力に応じて適切な処理を行い、一貫した正確な動作を保証できるようになります。
ページ
先ほどの図の「Edit Order」や「Add Pizza」などはページという単位です。
ページでは、他のページへの遷移(Routes)やEvent handlersを定義したりすることが可能です。
Routesについて
Routesはページ間遷移を定義する重要な役割を持ちます。
ページ間の遷移はIntentというユーザの意図を分類したものとその時の遷移先のペアによって定義されます。
Intentでは、Training phraseというエンドユーザーの発話に含まれる可能性があるフレーズのサンプル群を定義します。エンドユーザー入力がこれらのフレーズのいずれかと似ている場合、会話エージェント(Dialogflow CX)はこれをインテントにマッチングします。
そして、マッチングした場合Routesで定義した次のページ等に遷移します。
Training phraseでは、例えば、エンドユーザーの好きな色に関する入力をインテントに認識させるには、次のトレーニングフレーズを定義します。
- 私は赤色が好きです
- 私のお気に入りの色は黄色です
- 黒色
- 青色は私の好きな色です
エンドユーザーが入力(テキスト、音声、電話キーの押下)を行うと、会話エージェント(Dialogflow CX)はその入力をIntentのTraining phrase比較して、最も一致するものを見つけます。
しかし、この時全ての色に対して、同じTraining phraseを定義するのは非常に大変です。そのため、「私は赤色が好きです」というフレーズに対して、”赤色”の部分はパラメータとして定義することで、別の色で同じ文意だった場合においても、マッチさせることが可能になります。
このような場合に使用するのが、アノテーションです。「色」以外にも、明日などの「日付」、日本などの「場所」といった、トレーニング フレーズの一部にアノテーションを付けると、会話エージェント(Dialogflow CX)は、実行時にエンドユーザーが提供する実際の値の例であることを認識します。このように、パラメータとして抽出するすべてのトレーニング フレーズの部分に、アノテーションを付ける必要があります。そうしないと、Dialogflow は値を抽出しません。
アノテーションは日付、場所などはデフォルトで提供されていますが、色(赤色、黒色、青色,,,)のように独自で定義したい場合が出てきます。
そこで定義するのがentityです。entityでは、パラメータ化したい言葉とその同義語をまとめることができます。例えば、同じ赤色を意味する言葉でも、”赤色”, “あか”, “赤”, “レッド”などの言葉があります。これらを同じentityとして認識させるための定義も行います。
このように定義したentityを「私は赤色が好きです」のTraining phraseの赤色の部分にアノテーションとしてつけることで、赤色以外の別の色や、”あか”などの同義語が使用された場合でも、フレーズとマッチさせることができます。
これまで説明した部分を図式化すると下記のようになります。
Datastoreとは
データストアは、データストア エージェントがエンドユーザーの質問に対する回答をデータから見つけるために使用されます。データストアはウェブサイトやドキュメントのコレクションで、それぞれがデータを参照します。
データソースとしては、
- キャプチャのように、WebサイトのURLからサイト上のコンテンツを自動的にクロール
- Cloud Storageのバケットからデータをインポート
- APIを呼び出してデータを手動でインポート
の3パターンが提供されています。
ここで作成したData storeをPageに割り当てたり、Toolsに割り当てたりすることで、AI Agentはデータソースに基づいてエンドユーザに対して情報やアクションを提供することが可能になります。
Toolsとは
Toolsを使用すると、エージェントを外部システムに接続することができます。
接続された外部システムによって、エージェント アプリの知識を補完し、複雑なタスクを効率的に実行できます。
Tools にはいくつかのタイプがあります。
OpenAPI ツール
外部 API に接続するためのツールで、エージェントアプリがユーザーの代わりに API を呼び出します。
このOpenAPIツールを使用することによって、ECサイトのアカウント登録、ログインや、カート追加、購入などを行うことが可能になります。
対応パラメータ | path 、query 、header |
データ型 | string 、number 、integer 、boolean 、array (objectは未対応) |
認証方法 | APIキー、OAuth、署名なしトークン等 |
Data store ツール
エージェント アプリでデータストアを使用すると、上述したDatastoreの情報に基づいて、エンドユーザーの質問に回答できます。ツールごとに、各タイプのデータストアを 1 つ設定できます。
Data store ツールの仕組み
-
ユーザーの質問を受け取る
-
例:「おすすめのレシピは?」
-
-
関連する情報をデータストアで検索
-
例:レシピデータストアで検索
-
-
見つかった情報から適切な回答を生成
-
例:「ほうれん草とベーコンのパスタはいかがですか?」
-
このように、Data store ツールでは、ユーザーの質問内容に応じた自動かつ適切なデータを検索に基づく質問回答が可能です。
Function ツール
Function ツールは、ユーザーの端末情報取得やローカルファイルの操作など、、OpenAPI ツールからはアクセスできないクライアント側での処理を行う場合に使用します。Function ツールは、Agent アプリではなく、常にクライアントサイドで実行されます。
最後に
いかがでしたでしょうか。
本記事では、Google Cloud の Dialogflow CXにおけるFlows, Data store, Toolsなどの重要な概念について説明させていただきました。
次回の記事では、実際に作る際の手順を説明しようと思っておりますので、そちらも合わせて見ていただければ理解が深まるのではないかと思います。
最後まで読んでいただきありがとうございました。
コメント