Amazon Bedrock Agents で Conversational Builder が爆誕したよ！

~~※ Conversational Builder で Qiita で検索してもひっかからなかったので宇宙最速を名乗ってます~~
先行者がいたので、けしました
https://dev.classmethod.jp/articles/amazon-bedrock-agents-conversational-builder/

## What's new

https://aws.amazon.com/jp/about-aws/whats-new/2024/10/amazon-bedrock-agents-conversational-builder/

## What's new tl;dr


* AWS は本日、Amazon Bedrock Agents 用の Conversational Builder が GA したよ
* Bedrock Agents を構築するためのチャットインターフェイスで、チャットするとエージェントを爆誕できるよ。超楽だよ！
* マネコンからやろうぜ！


## Doc を読む（ただのちゃちゃ入れ和訳)

### Conversational Builder で Agent の作成と設定

https://docs.aws.amazon.com/bedrock/latest/userguide/agents-create-cb.html

Conversational Builder は、Agent を設定するのに役立つインタラクティブなアシスタントです。
Conversational Builder は、自然言語で Agent の目的を説明することで、その目的を満たすテスト可能なAgent を構築します。
Conversational Builder は、Agent を構築または更新するために必要な情報をすべて得るためにあなたと対話します。

:::note alert
Important
Conversational Builder は、Amazon Bedrock コンソールで、US East (N. Virginia), US West (Oregon), Europe (Frankfurt), Asia Pacific (Sydney), and Europe (Paris) の各リージョンで利用可能です。
:::

心の声「おい、東京どこいった…」

Conversational Builder は、以下の操作のみを行います:
- Agent の名前と説明の更新
- 自然言語で提供された指示に基づいて、Agent の指示の要約を生成
- アクショングループの作成
- アクショングループの名前と説明の更新
- アクショングループの要約に基づいてアクショングループ機能を定義
- ナレッジベースの関連付け、一覧表示、解除
- アクショングループの一覧表示または削除
以下は会話ビルダーとの対話の例です:

(原文)
> Conversational builder: Hello, I can help you update your Agent's configurations.
> What configurations would you like to update?
> You can say something like "Associate a knowledge base"
> User: Create a travel agent
> Conversational builder:  What is the purpose of this travel agent? What kind of tasks or capabilities should it have?
> User: Travel agent books flights and hotels for vacation
> Conversational builder: The travel agent with the purpose of booking flights and hotels for vacations has been successfully created.
        
(日本語訳)
> Conversational Builder: こんにちは、エージェントの設定を更新するのを手伝えます。どのような設定を更新したいですか? "ナレッジベースを関連付ける"などと言ってください。
> user: 旅行代理店を作成してください
> Conversational Builder: この旅行代理店の目的は何ですか? どのようなタスクや機能を持つべきですか?
> user: 旅行代理店は、バケーションの航空券とホテルを予約します
> Conversational Builder: 航空券とホテルの予約を目的とする旅行代理店が正常に作成されました。

### Bedrock のコンソール上で Conversational Builder を用いて Agnet を作成と設定

こっから私のスクショも混ぜていきます。

**Agent 作成**

1. Amazon Bedrock の権限を持つ IAM ロールを使用して AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/bedrock/ で Amazon Bedrock コンソールを開きます
2. 左側のナビゲーションペインから「Agents(Builder tools -> Agents)」を選択します
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/0ea3c1e1-955a-8650-02f9-eb920d1d639f.png)

3. Agents セクションで、「Create Agent」を選択します
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/13cf515f-fb93-2964-1a15-8d112386c665.png)

4. （オプション）エージェントの自動生成された名前を変更し、オプションで説明を追加します(今回は説明なし)
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/9c11f296-af80-c4ee-bbac-8fc3b1bcbc19.png)

5. 「Create」を選択します。エージェントが作成され、新しく作成されたエージェントのエージェントビルダーに移動します。ここでエージェントを設定できます
6. 以下の手順に進んでエージェントを設定するか、後でエージェントビルダーに戻ることができます

**Agent 設定**

1. Agent BUilder がまだいない場合は、以下の手順に従ってください：

    1. Amazon Bedrock 権限を持つ IAM ロールを使用して AWS マネジメントコンソールにサインインし、https://console.aws.amazon.com/bedrock/ で Amazon Bedrock コンソールを開きます

    2. 左側のナビゲーションペインから [Agents] を選択します。次に、[Agents] セクションでエージェントを選択します

2. [Edit in Agent builder] を選択します (Edit in Agent builder が見つかりませんでしたが、単純にいじりたい Agent を選んで [Edit] で OK でした)

3. Agent Builder で [Assistant] を選択します
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/599b48d5-8823-144a-707f-40ba23d56321.png)


4. Agent builder ペインで、エージェントの目的を入力します。会話型ビルダーアシスタントとのやり取りを開始するには、サンプルのやり取りを参照してください
  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/2fcce4a7-0511-91f6-dcc8-606defed1807.png)


5. 会話型ビルダーがエージェントの設定を完了したら、以下のいずれかのオプションを選択します：

  * Agent Builder に留まる場合は、[Save] を選択します。その後、エージェントを [Prepare] して、テストウィンドウで更新された設定をテストできます。エージェントのテスト方法については、「エージェントの動作をテストしてトラブルシューティングする」を参照してください

  * Agent Details ページに戻るには、[Save and exit] を選択します


## やってみる

ということで Agent builder からやってみましょう。
試しに四則演算をする Agent を作ってみましょうかね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/8a0bc5d6-0b89-1edc-26a3-a2d8d05c19b0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/33b697d6-7f9e-c83a-85ae-755d628d0d77.png)
最後に `Prepare` を押下します。

そして 1+1 をさせてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/6b340349-9468-3e67-4ce4-01c823b1a76d.png)

すると、 output の指定を求められました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/60e20d88-1260-a2ae-41d0-6314c767c5d9.png)
よくわからなかったので、とりあえず適当に `{result:2}`としました（しまった、ダブルクオーテーションでくくるのを忘れた)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/451e80c7-3c49-7b3b-318e-8ea334ae51ff.png)

うまく動きました。

問題を変えてみます。また先程サンプルでは正解を与えてしまったので、不正解のサンプルを与えてみます。（ちゃんと`result` をダブルクオーテーションくくるのを忘れずに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/f46b3c0b-f843-56ba-c0d6-6897c8efaae5.png)
計算機を使っても合っています。

どうやらちゃんと動いていそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/19df7c54-a49c-95f8-ecde-59fd5499461a.png)

念の為 Action groups を確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/3694540c-b339-e877-6110-bbc9571817f3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/504112/6c31d8ff-8edb-aa56-d7be-3efc428fe696.png)


それっぽいのが出来上がってました。
やったね！

ちなみにいろいろ試してみましたが、Action group は return control しか出してくれませんでした。
つまり、Lambda 関数を作ってくれるところまではやってくれなさそうです。
Prompt 及び引数は作るからそこから先は自分で作ってくれ、ということなのかもしれません。


## おわりに
とりあえず Agents 作りたい！にはとても役に立ちそうです。
Bedrock Agents には [GetAgent](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-agent/client/get_agent.html) API 及び [CreateAgent](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/bedrock-agent/client/create_agent.html) API もあるので、とりあえず作ったのを違う環境に、持って行くのも楽なのでまずは使ってみてはいかがでしょうか。