Closed6

AIエージェント作成プラットフォーム「Vertex AI Agent Builder」を試す

kun432kun432

ここで知った。

https://x.com/hokazuya/status/1824777182834802999

元記事はこちららしい

https://skimai.com/top-5-platforms-for-building-ai-agents/

紹介されている中で、AutoGen、crewAI、LangChain(というかLangGraph)は過去に試した

https://zenn.dev/kun432/scraps/5c647fa829eb9a

https://zenn.dev/kun432/scraps/a33a26c8e32895

https://zenn.dev/kun432/scraps/7ea614c804cfe7

Vertex AI Agent Builderは試したことがないのでやってみる。

kun432kun432

とりあえずチュートリアル的なドキュメントを探してみたけど、これかな?

https://cloud.google.com/dialogflow/vertex/docs/quick/create-application?hl=ja

何故か事前準備でDialogflowの設定を求められているのだけども・・・ざっと見てみた感じそこにこだわらなくてもある程度までは行けそうなので、旦これに従って進めてみる。

前提としてはこういうものを作るみたい

このガイドでは、シンプルなシャツの注文エージェント アプリを作成してテストする方法を説明します。このエージェント アプリを操作するときに、店舗の場所や営業時間の問い合わせ、シャツの注文を行うことができます。

Vertex AI Agent Builderのコンソールにアクセスして、まず、APIを有効化する。

「新しいアプリを作成」

アプリの種類を選択。下にスクロールすると・・・

「エージェント」があるのでこれを選択

エージェントの名前とリージョンを設定して作成。なお、日本リージョン(asia-northeast1)はなかった。

最初に"Default Agent"の作成画面がでてくる。これがエージェントアプリのデフォルトエージェントになるらしいのだが、ここでは何もせずに「戻る」をクリック

エージェント一覧画面が表示される。

ここから新規にエージェントを作成する。以下の2つのエージェントを作成する。

  • オーダーエージェント: シャツのオーダー処理を行う
  • 情報エージェント: 店舗の情報に関する質問に答える

まずオーダーエージェントを作成する。「Create」をクリック

エージェントの設定画面が表示される。

エージェントに必要な設定は以下。

  • Agent Name: エージェントを識別するための名前。
  • Goal: エージェントが達成すべき内容の概要。
  • Instructions: エージェントのGoalを達成するために必要な手順の概要

オーダーエージェントの場合はこんな感じで。チュートリアルでは英語だけど日本語で設定してみる。

項目
Agent Name オーダーエージェント
Goal あなたはシャツ店のオーダーエージェントです。お客様のシャツの購入を手伝うのがあなたの仕事です。
お客様がサイズと色を選択するのを手伝ってください。
シャツのサイズは、S、M、Lがあります。
シャツの色は、赤、緑、青のいずれかです。
Instructions - お客様がサイズを指定していない場合は、サイズを選択するようにお客様に尋ねてください。
- お客様が色を指定していない場合は、色を選択するようにお客様に尋ねてください。
- お客様がシャツのサイズと色を選択したら、選択内容をお客様に繰り返し伝え、選択内容を確認してもらってください。
- お客様が選択内容を確認したら、シャツが注文されたことをお客様に伝えください。
- 価格を提示したり、代金を徴収したりしないでください。
- お客様の氏名や住所を収集しないでください。

設定したら「Save」で保存する。

同様に情報エージェントを作成する。設定項目は以下。

項目
Agent Name 情報エージェント
Goal あなたはシャツ店の情報を提供します。
店舗は毎日午前8時から午後6時まで営業しています。
店舗の所在地は、兵庫県神戸市中央区波止場町です。
Instructions - お客様が店舗の場所を尋ねた場合は、住所をお知らせください。
- お客様が店舗の営業時間をお尋ねの場合は、営業時間をお知らせください。

最後にデフォルトのエージェントの設定。デフォルトのエージェントは他のエージェントへのルーティングを行うので、そのための設定を行う。

「Default Generative Agent」をクリック

以下の設定で書き換えて保存する。

項目
Goal あなたはシャツ店のエージェントです。
あなたの名前は「サマンサ」です。
あなたの仕事は、お客様の質問に基づいて、他のエージェントにお客様を誘導することです。
Instructions - お客様にまだ挨拶していない場合は、お客様に挨拶をして、自己紹介をして、ユーザーにどのようなお手伝いをすればよいか尋ねてください。
- お客様が店舗に関する情報を希望している場合は、 ${AGENT:情報エージェント}に誘導します。
- お客様がシャツを購入したい場合は、 ${AGENT:オーダーエージェント}に転送します。

これでエージェントの設定は完了。右側のチャットで試してみる。ここで失敗したなぁと気づいたのだけど、モデルをGemini-1.5-Flashに変更しようとすると、

こうなる

サポートしていないのに"Proceed"ってのがちょっと謎・・・とりあえず今回は諦めてGemini-1.0-Pro-001で進めることにする。

適当にチャットしてみる。

レスポンスが返ってくるのだけど、英語かぁ・・・とりあえず気にせず進める。

でこれだけでも一応エージェントとしては動作するのだけども、回答精度を上げるために会話例を保存することができる。いわゆるAlexaでいうところの「サンプル発話」、Google Homeでいうところの「Training Phrases」的な感じで、おそらく内部的にはfew shot的な扱いになる模様。

左のエージェントを選択してから「Save example」をクリック。エージェントが選択されていない場合は「Save Example」が有効にならなくて一瞬わからなかった。

こんな感じで登録。チュートリアル見てると自分の入力もあらかじめ表示された状態になるみたいなんだけど、試した限りなにやってもエージェント側の出力だけが表示されていて、自分の入力は表示されなかったので手動で入力した。

登録された。

Selection Strategyというのはこの会話例がfew shotとしてプロンプトに含まれるかどうか、ということらしい。デフォルトは"Auto"で、トークン上限に収まるなら含められる・トークン上限に近い場合は含まれない場合がある、というもの。他に"Always"(常に含まれる)と"Never"(含まれない、つまりfew shotとして機能しない)ってのがあるみたい。

登録したらキャンセルで戻る。

チャット画面に戻ったら会話をリセット

あとはエージェントを切り替えて同じことをやればよい。

例の登録は必須というわけではなさそうなので、残りはスキップしたんだけど、なかなか他のエージェントにルーティングしてくれなかったりするし、どうも自分の入力内容が正しく受け取られてたりそうでなかったりするように思える。

"Provide an utterance ..."ってのが入力したけどどうも正しく受け取られていないと思われる箇所。「シャツを買いたい」ってのはちゃんとなってるみたいなんだけども。

うーん、これじゃテストができない。。。。

kun432kun432

なんでうまくいかないのか、ちょっとよくわからないな・・・

あと、これはもう個人的なバイアスなんだけども、ちょっとしたところにActions On Googleっぽさを感じるところがある。AoGにあまりいい印象がない自分としては、やや忌避感が生まれてしまったかも。

うまくいかないのは環境依存かもしれないので、現時点では評価は保留だけど、自分的には少しトーンダウンかなぁ・・・

mori-shinmori-shin

突然のコメント失礼します。

Examplesは↓のように、具体例で入れておく必要があります。
Vertex AI AgentsのExamples
このExamplesは精度向上のために1エージェントあたり4つ以上の登録が推奨されてます。※Vertex AI Agent Builderについて私が会社ブログで書いた記事がこちらなのですが、他にもいろいろ解説していますのでよろしければ、、!

エージェントについて調査していると、いつもkunさんのスクラップが出てくるので拝見していました。これからも影ながらキャッチアップの一助にさせていただきます🙇‍♂️

kun432kun432

コメントありがとうございます。記事のご紹介もありがとうございます!

プロンプトよりもExamplesが精度に影響するという感じなのですね、なるほど・・・・
ただ、個人的にはExample登録のUIがいまいち解せない感がありまして、マルチターンで登録できるのはいいんですが、ユーザ側の入力が"Provide an utterance ..."で受け渡されないのがなぁ、、、というところです。もしかすると環境依存なのかもしれませんが。

ご紹介頂いた記事を元に再度トライしてみたいと思います!

このスクラップは3ヶ月前にクローズされました