Vertex AI Agent Builderを試してみた

# はじめに
2024年4月に，ラスベガスで行なわれたGoogle Cloud Next '24にて，Vertex AI Agent Builderが発表されました．今回はお試しにそれを触ってみようと思います．

https://cloud.withgoogle.com/next

# Agent Builderとは
Agent Builderとは，生成AIを活用したAgent開発を簡単に行なうことができる，サーバーレスなフルマネージドサービスです．

https://cloud.google.com/products/agent-builder?hl=ja

## 料金
Vertex AI エージェントはクエリ1000件あたり$12となっています．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/4416ef36-8baf-a305-5f5b-deb5d9f545f8.png)


# お題
今回はドキュメントに書かれていた「対話型 AI エージェントを構築する」を行ないます．ノーコードでAgentを作成することができます．
題材として，野球に関する質問が来たら，野球の専門家問い合わせをして回答するAppを作成します．

## 「新しいアプリ」 → 「Agent」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/f712b2e5-f12b-1d54-d10b-f4135244c709.png)


## Agentの作成
以下2つのAgentを作成し，それぞれにGoalとInstructionsを付与します．
- 質問受け付けAgent(Reception)
- 野球専門家Agent(baseball expert)

### Reception
#### Goal
```
Your goal is to collect the user's request and route the user to the correct expert among the various experts. 
```

#### Instructions
```
- Greet the user and tell them that you can help answer question s related baseball.
- DO NOT attempt to answer the user's question ever.
- ALWAYS transfer them directly to another topic.
- There is a topic you can choose from:
    - For questions related to maths transfert to  ${AGENT: baseball expert}
```


### baseball expert
#### Goal
```
Your goal is to help users find answers related to baseball. DO NOT answer question of topics other than baseball.
```

#### Instructions
```
- Step 1. Ask the user to share the question.
- Step 2. Once the user shares the question, answer the question based on your knowledge.
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/6007608f-a870-b140-fb06-b623315fa722.png)


## Exampleの作成
### Reception内に想定されるやり取りを追加
「Enter user input」で想定するユーザーの入力を行ない，適宜「Add action」を使って編集していきます．
今回は「Agent invocation」を選択し，baseball expertをお呼びします．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/6e655f88-8ef2-ffa8-c08a-77456e3dd085.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/4d583c95-7267-101b-e45c-58bb4787b071.png)

:::note warn
冒頭がUserからの入力だとエラーが出てExampleが保存できませんでした．なので，冒頭の「User: Hi」を削除して，最初はAgent Responseにします．

```
Only the default playbook can have examples that begin with a user utterance.
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/6e49ac3b-7e58-2382-68fe-371430a62bd6.png)
:::

## 実際に問い合わせる
それでは，想定通りの質問をして野球の専門家が回答してくれるか確認します．
まずは，「野球に関して質問がある」とReceptionに言うと，baseball expertをお招きいただきました．
いたずらで，「ダブルフォルトとはなんですか？」「ダブルドリブルとはなんですか？」と聞いたのですが，専門外のようなので答えてくれませんでした．「ダブルプレーとはなんですか？」としたところうまく回答してくれました．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/ae5a15c0-95d4-292f-a0a8-603589afc538.png)


# 所感
複雑な作業をすることなく，簡単にAgentを作ることができました．非常に簡単ではあるとは思いますが，やはり中の動きがわからなかったり，設定の再現性を担保するにはコードで作る方が良いのかなと感じたりしています．


# まとめ
単純な例を使って，Agent Builderを触ってみました．今後は応用先も検討していきたいです．


# おまけ: SlackからAgentとやりとりする
[ドキュメント](https://cloud.google.com/dialogflow/cx/docs/concept/integration/slack?hl=ja)通りに，今回作成したAgentをSlackから呼び出す事もできました．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618319/fdc64961-7862-56c8-eae2-401c8cceb283.png)


# 参考
- [Vertex AI Agent Builder](https://cloud.google.com/products/agent-builder?hl=ja)
- https://www.youtube.com/watch?v=9WytPcE64GQ
- https://cloud.google.com/dialogflow/cx/docs/concept/integration/slack?hl=ja