16
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS公式のAmazon Bedrock Agentsハンズオンがとても良かった!!

Posted at

はじめに

こちらのAWS公式ハンズオンをやってみました!

image.png

この記事は、ハンズオンで学んだ内容を備忘的に残すことを目的とさせていただいてます。
詳細な手順などはAWSのハンズオンページをご確認ください!
実際に手を動かすことによって得られる学びは非常に大きいので、是非ご自身でもやってみていただければと思います!

1.環境準備

Claudeのモデルアクセスを有効にします。
image.png

2.環境構築

2-1. Amazon Bedrock Agentsの作成
2-2. Amazon DynamoDBの作成
2-3. AWS Lambda関数の作成
2-4. アクショングループの追加(在庫追加)
2-5. アクショングループの追加(製品情報検索)

2-1. Amazon Bedrock Agentsの作成

ここでは、マネジメントコンソールにログインし、生成AIサービスの Amazon Bedrock の Agent を作成します。

こんな感じ。
image.png

今回は触りませんでしたが、「その他の設定」からCode Interpreterやユーザー入力の有効/無効を設定できるんですね!!簡単!!
image.png

アクショングループを追加して終了。

最後に「準備」を押すのを忘れないように!!
「準備」を押すことでステータスが PREPARED になります。
image.png

2-2. Amazon DynamoDBの作成

ここでは、Amazon Bedrock の Agent が在庫の確認のためにアクセスする倉庫在庫DBである Amazon DynamoDB を作成します。

テーブルを作成し、レコードを1件手動で登録します。
image.png
weight が文字列型なのが解せない!w

2-3. AWS Lambda関数の作成

ここでは、Amazon Bedrock の Agent が実行するアクショングループファンクションである Lambda関数 を作成します。

アクショングループ作成時に生成されたLambda関数の設定を行います。
まず、用意されているコードをコピペしてデプロイ。
DynamoDBのテーブルから特定の商品名に基づいて在庫情報を取得し、レスポンスを返すコードです。
image.png

続いて、Lambda関数に紐づけられたIAMロールに、DynamoDBの操作権限を付与。
image.png

続いてAgentの動作確認を行います。
image.png
いい感じ!

今回作成したAgentの設定では「ユーザー入力」は無効(デフォルト)になっているのに、上記の動作確認では、Agentがちゃんと足りない情報(今回は製品名)を聞き返してくれましたw
image.png
これは如何にw

推察するに、、
今回はアクショングループで必須のパラメータが設定されていました。
image.png
その状況で、必須パラメータに該当する情報がプロンプトに含まれていなかった場合、Agentが実行計画考えるときに、「製品名の情報ないとどうしようもないしな、、ユーザー入力無効やけどこればっかりはな、、」と思い至り、聞き返してくれるのかもしれません。

トレースを見ても、そのような雰囲気を感じます。
image.png

2-4. アクショングループの追加(在庫追加)

ここでは、Amazon Bedrock の Agent が実行するアクショングループを追加して、自然言語によるリクエストによって、在庫の追加を実行できるようにします。

まず、在庫追加用のアクショングループを作ります。
image.png

続いて、「エージェント向けの指示」を書き換えます。

## 修正前
あなたは倉庫業務のエージェントです。入力に応じて在庫の検索や登録・更新を行います。使用できる言語は日本語のみです。


## 修正後
あなたは倉庫業務のエージェントです。入力に応じて在庫の検索や更新を行います。
使用できる言語は日本語のみです。
製品の在庫数を検索するリクエストは、製品名{product_name}を使ってアクションを呼び出します。
製品の在庫を追加するリクエストは、製品名{product_name}と数量{num}を使って、アクションを呼び出します。
<example>
"シャンプーは何個ですか"というリクエストの場合、{product_name}がシャンプーを表します
"シャンプーを10個登録したい"というリクエストの場合、 {product_name}がシャンプー、{num}が10を表します
</example>

2-3同様、アクショングループ作成時に生成されたLambda関数の設定を行います。
用意されているコードをコピペしてデプロイ。
DynamoDBテーブルを使用して商品の在庫数を更新するコードです。
image.png

続いて、これまた先ほどと同様に、Lambda関数に紐づけられたIAMロールにDynamoDBの操作権限を付与し、Agentの動作確認を行います。
image.png
いい感じですね!

DynamoDBのテーブルも更新されています。
image.png

2-5. アクショングループの追加(製品情報検索)

ここでは、Amazon Bedrock の Agent が実行するアクショングループを追加して、自然言語によるリクエストによって、製品情報を照会するようにします。

やることは2-4とほぼ一緒なので割愛します。

3.ホスティング

3-1. Agentのエイリアスの作成
3-2. Amazon VPCの作成
3-3. Amazon EC2の作成

3-1. Agentのエイリアス作成

チャットアプリケーションからアクセスするためのAgentのエイリアスを作成します。

Agentのエイリアスはエージェントのデプロイ戦略に欠かせないものです。
詳細はこちらをご確認ください。

というわけで、張り切ってエイリアス作成!
image.png

3-2. Amazon VPC

Amazon EC2をデプロイするためのAmazon VPC を作成します。

VPC、サブネットなどを作っていきます。

VPCを作るのと同時にサブネットやルートテーブルの設定もできます。
いい時代になりましたw
image.png

3-3. Amazon EC2の作成

チャットアプリケーションを展開する Amazon EC2 を作成します。

EC2を作成して、ユーザーデータでStreamlitを入れています。
EC2からBedrockにアクセスできるように、EC2に紐づくIAMロールに AmazonBedrockFullAccess を付与し、動作確認。
image.png
できた!!

4.片付け

忘れずにやりましょう!

4-1. Amazon EC2の削除
4-2. AWS Lambdaの削除
4-3. Amazon DynamoDBの削除
4-4. Amazon Bedrock Agentsの削除

終わりに

以上、AWS公式のAmazon Bedrock Agentsハンズオンをやってきました。
Agentsの構築の仕方、動き方の理解が非常に深まりました。

ただ、今回のハンズオンではアクショングループの利用にとどまり、ナレッジベース(RAG)の利用はありませんでした。
@minorun365 さん、@hedgehog051 さん、@moritalous さんが執筆された『Amazon Bedrock 生成AIアプリ開発入門』で紹介されているハンズオンは、ナレッジベースを含む広い範囲の機能を触れますので、こちらも是非お求めいただければと思います。

最後までお目通しいただき、ありがとうございました!

16
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?