Vertex AI Agentsの便利なところ、これからなところ
LangGraphやAutoGenなどのエージェント構築ツールとの比較を念頭に置きつつ紹介します。
Table of contents
author: Shintaro
はじめに
ノーコード(ローコード)でAIエージェントが構築できるツールが増えています。 例えば以下のようなものです。
今回の記事では、その中からGoogle CloudのVertex AI Agent Builderをピックアップします。
LangGraphやAutoGenなどのエージェント構築フレームワークとの比較を念頭に置きつつ、
便利なところ、これからなところを紹介していきます。
なお、以前の記事で以下のことには触れているため、ゴッソリ割愛して早速本題に移ります。
- Vertex AI Agent Builderとは
- Vertex AI Agentsとは
一言だけ添えると、Vertex AI Agentsは、Vertex AI Agent Builderに含まれる1つの機能です。
以降の表現もVertex AI Agentsで統一します。
便利なところ
まず、便利なところを列挙します。
- ノーコードによる簡単なエージェント構築
- Google Cloudとのネイティブな統合
- Cloud Logging、BigQueryへのログ出力
- ツールとしてのデータストアの活用
- SlackやGoogle Chatなどとの簡単な連携
- 外部APIをツールとして呼び出し可能
順番に説明していきます。
ノーコードによる簡単なエージェント構築
Agents for Amazon BedrockとMicrosoft Copilot Studioにも軽く触れてみましたが、
Vertex AI Agentsが一番簡単かつ直感的にエージェントを構築できるのではないかと感じています。
(なお、完全な主観ですしポジショントークでしかありません)
ただしその裏返し(?)で、Vertex AI Agentsは機能的には簡素だと感じます。
Google Cloudとのネイティブな統合 - Cloud Logging、BigQueryへのログ出力
コンソールからチェックをつけるだけで、
Cloud Logging、BigQueryにログが出力されるようになります。
以下のような情報がCloud Loggingに出力されます。
- 入力、出力テキスト
- 入力、出力トークン
- リクエストを受けた時間
- セッションID
- エージェントID
※BigQueryへ出力される情報は上記と異なります。
Google Cloudとのネイティブな統合 - ツールとしてのデータストアの活用
BigQueryやCloud Storage、WEBサイトにあるデータについて質問できるツールを設定できます。
Vertex AI Searchで設定するデータストアと似ています。(ほぼ同じである理解です)
SlackやGoogle Chatなどとの簡単な連携
以下のようなコミュニケーションツールと簡単に連携できます。
外部APIをツールとして呼び出し可能
Cloud Run Functionsなどに定義した関数をツールとして呼び出せます。
以下のように、OpenAPIのスキーマを定義して、ツールとして登録します。
これからなところ
今後の拡充と発展に期待したいところを列挙します。
- 限られたドキュメント
- 使用できるモデルの少なさ
- 挙動制御の難しさ
- エージェント間のループ
- エージェント間の情報の受け渡し
- Human-in-the-loop
以下の2つについてはExamplesによって疑似的に再現できるため、合わせて解説します。
- エージェント間の情報の受け渡し
- Human-in-the-loop
限られたドキュメント
2024/9時点で、特に日本語の情報が少なめです。
- 簡単な公式ドキュメント(英語版も情報量はあまり変わらない)
- サンプル(ほぼ)なし
- 特に日本語のやってみた系記事(ほぼ)なし
使用できるモデルの少なさ
使用できるモデルは以下3つです。
- Gemini 1.5 Flash
- Gemini 1.0 Pro
- Text Bison
挙動制御の難しさ - エージェント間のループ
Vertex AI Agentsで作れるのはピラミッド型の階層をもったエージェントです。
基本的に、頂点にいるエージェントが各エージェントに対して指示を渡し、
タスクが完了したら頂点のエージェントに戻るといった流れのみ作成できます。
つまり、ピラミッドの底にいるエージェント同士が
何往復か会話をループしてタスクを解決するような構造のエージェントは作成できません。
挙動制御の難しさ - エージェント間の情報の受け渡し
エージェントが保持する情報(LangGraphのStateのようなイメージ)を、エージェント間で受け渡す機能がありません。
ただし、Examplesの機能で疑似的に再現できるようになっています。
Examplesは、LLMに持たせるFew-shotのプロンプトです。
以下のように会話の具体例をプロンプトとして持たせることで、挙動をその通りに制御することを目的としています。
そしてExamplesには「Input&Output」という項目があります。
これは、定義できる以下の情報をエージェント間で「できる限り」受け渡そうとしてくれるものです。
- 文字列
- 数字
- ブール値
- ツール固有のパラメータ
- 分岐前のエージェントで使用したツールからの情報など。例えば、ユーザーIDなど。
あくまでプロンプトであるため、意図した情報の受け渡しが行われるか確実ではありません。
挙動制御の難しさ - Human-in-the-loop
例えばツール実行前にユーザーに確認を求めるような機能はありません。
ただし、こちらも同じくExamplesによって疑似的に再現できます。
そして同じく、あくまでプロンプトであるため、ツール使用前に確実にユーザーに確認してくれるとは限りません。
まとめ
Vertex AI AgentsはExamplesによる挙動制御が構築の肝になると感じています。
想定される会話の数だけExamplesを登録する必要があり、
一方でExamplesはプロンプトであるためインプットのトークン数の制限もあるので、
複雑なエージェントの構築を目指す場合は制約となる可能性があり、管理も大変です。
ただ、シンプルな画面で簡単にエージェントを構築できる点は本当に便利です。
ノーコードでの構築という趣旨とは外れますが、
DialogflowのAPIから独自のものにリプレイスされる様子(時期不明)で、
今後のアップデートにも色々と期待です。
※本記事は、ジーアイクラウド株式会社の見解を述べたものであり、必要な調査・検討は行っているものの必ずしもその正確性や真実性を保証するものではありません。
※リンクを利用する際には、必ず出典がGIC dryaki-blogであることを明記してください。
リンクの利用によりトラブルが発生した場合、リンクを設置した方ご自身の責任で対応してください。
ジーアイクラウド株式会社はユーザーによるリンクの利用につき、如何なる責任を負うものではありません。