はじめに
AWSのBedrock Chatを試してみました。
Bedrock Chatとは
AWSのBedrockを使用し、簡単にデプロイできるAIチャットのサンプルです。
情報が外部に漏れないため、セキュリティが気になる場合の選択肢となります。
アーキテクチャ
アーキテクチャの詳細については以下のGitHubのREADMEをご覧ください。
この記事で伝えたいポイントは、Bedrock Chatをデプロイすると、複数のAWSサービスが自動的に作成されるということです。
特に注意したいのはAmazon OpenSearch Serverless のコレクション。こちらは使用していなくてもコストがかかります。
(料金は規模によるとのことですが、私の場合は1週間放置で約100USDかかりました。参考までに。この辺の体験談は別記事でまとめる予定です。)
デプロイ手順
以下を参考に進めました。
Bedrock モデルアクセス設定
使用リージョンは東京(ap-northeast-1)です。
Amazon Bedrockモデルアクセスを開きます。
使用可能なモデルが表示されます。
今回は、全てのモデルを有効にしました。
Anthropic 用にユースケースの詳細を追加
法人向けのUIとなっていましたが、以下のように入力したところ通りました。
会社名: 自分の名前
会社のウェブサイトのURL: 個人GitHub
確認画面で内容を確認し、送信をクリック。
Bedrock Chatをデプロイする
日本で実行しているため、東京リージョンでCloudShellを開きます。
以下のコマンドを実行しデプロイします。
git clone https://github.com/aws-samples/bedrock-chat.git
cd bedrock-chat
chmod +x bin.sh
./bin.sh --disable-self-register --bedrock-region ap-northeast-1 --enable-lambda-snapstart
※設定したオプション
- --disable-self-register: 自己登録を無効化
- --bedrock-region ap-northeast-1: リージョンを東京に設定
- --enable-lambda-snapstart: Lambda SnapStartを有効化し、応答を高速化
※デプロイに35分程度かかります。
ログ
~ $ git clone https://github.com/aws-samples/bedrock-chat.git
remote: Compressing objects: 100% (337/337), done.
remote: Total 13316 (delta 577), reused 417 (delta 416), pack-reused 12563 (from 4)
Receiving objects: 100% (13316/13316), 83.35 MiB | 22.73 MiB/s, done.
Resolving deltas: 100% (8986/8986), done.
~ $ cd bedrock-chat
bedrock-chat $ chmod +x bin.sh
bedrock-chat $ ./bin.sh --disable-self-register --bedrock-region ap-northeast-1 --enable-lambda-snapstart
===========================================================================
⚠️ Heads Up: A Brand-New Era Begins with v3.x!
---------------------------------------------------------------------------
🚨 v3.x is NOT compatible with v2.x or any earlier versions.
Carefully read the migration guide before proceeding:
https://github.com/aws-samples/bedrock-chat/blob/v3/docs/migration/V2_TO_V3.md
❗ This upgrade is significant. To prevent DATA LOSS (especially custom bots),
follow the steps outlined in the guide step-by-step.
✅ This script is safe ONLY IF you're:
- A new user starting with v3.x
- Or already upgraded to v3.x
📌 Otherwise, STOP now and read the migration guide above first!
---------------------------------------------------------------------------
🌟 Let's begin your v3.x journey — the future awaits!
===========================================================================
Are you ready to explore the world of v3.x? (y/N): y
Buckle up! Starting deployment for v3.x...
Waiting for changeset to be created..
Waiting for stack create/update to complete
Successfully created/updated stack - CodeBuildForDeploy
Waiting for the stack creation to complete...
NOTE: this stack contains CodeBuild project which will be used for cdk deploy.
Done.
Starting CodeBuild project: Project-3eC8NYps5RaH...
Waiting for the CodeBuild project to complete...
CodeBuild project completed with status: SUCCEEDED
Build Log Group Name: /aws/codebuild/Project-3eC8NYps5RaH
Build Log Stream Name: 99182ab6-9269-40c8-b9b3-5bdd83b10b93
Fetch CDK deployment logs...
Frontend URL: https://xxxxxxxxx.cloudfront.net\n"
出力されたURLにアクセスします。
Bedrock Chatが表示されました!
ユーザを作成
オプションで自己登録を無効化したため、ブラウザから登録ができません。
Amazon Cognitoでユーザーを作成します。
必ずEメールで招待を送信を選択します。
(招待を送信しないと初期パスワードが分からないためログインできません)
ユーザーを作成すると、先ほど設定したメールアドレスに初期パスワードの通知が届きます。
Bedrock Chatに戻り、メール記載の情報でサインイン。
※パスワード最後尾っぽく見えるピリオドは不要です。(単に文末を示しています)
サインイン後、パスワード再設定をします。
大文字や記号を含んだものでないと弾かれるはずです。
パスワード変更後、「アカウントの復旧には確認済みの連絡先が必要です」との表示がでます。確認をクリック。
Bedrock Chatにてコードを入力後、Bedrock Chatが使えるようになりました。
動作確認
AIモデルの確認
東京リージョンでは使えず、モデルアクセス許可していないモデルが選択できるようになっていました。
モデルアクセス許可をしていないモデルをあえて選択し動作確認してみたところ、許可されていないということで、使えませんでした。
claude-3-7-sonnetを試したところ、従量課金では使えない(あらかじめプロファイル作成が必要)とのことでした、。
ネット検索検証
ChatGPTやClaude.ai(Claude Sonnet 4)ならばWeb検索する質問を投げてみます。
明日の天気を教えて
ボット作成
チャットボットでインターネット検索するツールを有効にしたら、検索できるようになるかもしれないと考え、ボットを作成してみました。
ボット名: 検索アシスタント
説明文: インターネット検索機能を使って最新の情報を調べ、質問にお答えする汎用チャットボットです。ニュース、天気、一般的な質問など幅広いトピックに対応します。
インストラクション:
あなたは検索機能を持つ汎用アシスタントです。以下の役割を果たしてください:
## 基本機能
- ユーザーの質問に対して、必要に応じてインターネット検索を行い最新の情報を提供する
- 検索結果を分かりやすく整理して回答する
- 情報源を明記し、信頼性の高い回答を心がける
## 対応範囲
- 最新ニュース・時事問題
- 天気予報
- 株価・為替情報
- スポーツ結果
- 技術情報・トレンド
- 一般的な質問・調べ物
- その他幅広いトピック
## 回答スタイル
- 簡潔で分かりやすい説明を心がける
- 複数の情報源がある場合は比較検討して回答する
- 情報が見つからない場合は正直にその旨を伝える
- 日本語で自然な会話を行う
## 注意事項
- 古い情報と最新情報を区別して提示する
- 不確実な情報については推測である旨を明記する
- 有害・違法な内容は扱わない
インターネット検索:インターネットで情報を検索します。を有効にします。
利用可能なモデル設定は Claude 3.5 (Sonnet)v1のみとします。
他は初期設定のままでボットを新規作成します。
東京の天気を聞いてみたところ、インターネット検索はしようとするが、失敗していました。
使用したモデル、Claude 3.5 (Sonnet)はツール使用可能。
ざっと調べてみたところ、検索APIを設定したBedrock Agentを作成する必要がありそうです。
Bedrock Chatを削除する
Bedrock Chatの検証を一通り終えたあと、コストが気になり削除しました。
次のような順番で削除するとスムーズだと思います。
まず、Bedrock Chatデプロイ時に自動作成された以下を削除します。
- OpenSearch Serverless コレクション
- WAF WebACL
- S3
- Lambda
- CloudWatch
- CloudFront(これは無効化まで、スタック削除と同時に削除されます)
その後、CroudFormationで以下のスタックを削除します。
もしスタックに紐づいているリソースが残っている場合、ここで指摘を受けます。
紐づくリソースを削除してから、スタックの削除再実行を行ってください。
- BedrockChatStack
- BedrockRegionResourcesStack
- CodeBuildForDeploy
- CDKToolkit
※CDKToolkitを最後に削除してください。ロールの関係で他のスタックを削除できなくなる可能性があります。
もしCDKToolkitを先に削除してしまい、スタックの削除ができなくなった場合、CloudShellで以下のように実行してください。
~ $ cdk --version
2.1021.0 (build 059c862)
~ $ cdk bootstrap aws://349821334917/ap-northeast-1
⏳ Bootstrapping environment aws://349821334917/ap-northeast-1...
Trusted accounts for deployment: (none)
Trusted accounts for lookup: (none)
Using default execution policy of 'arn:aws:iam::aws:policy/AdministratorAccess'. Pass '--cloudformation-execution-policies' to customize.
CDKToolkit: creating CloudFormation changeset...
✅ Environment aws://349821334917/ap-northeast-1 bootstrapped.
NOTICES (What's this? https://github.com/aws/aws-cdk/wiki/CLI-Notices)
34892 CDK CLI will collect telemetry data on command usage starting at version 2.1100.0 (unless opted out)
Overview: We do not collect customer content and we anonymize the
telemetry we do collect. See the attached issue for more
information on what data is collected, why, and how to
opt-out. Telemetry will NOT be collected for any CDK CLI
version prior to version 2.1100.0 - regardless of
opt-in/out. You can also preview the telemetry we will start
collecting by logging it to a local file, by adding
`--unstable=telemetry --telemetry-file=my/local/file` to any
`cdk` command.
Affected versions: cli: ^2.0.0
More information at: https://github.com/aws/aws-cdk/issues/34892
If you don’t want to see a notice anymore, use "cdk acknowledge <id>". For example, "cdk acknowledge 34892".
おわりに
AIモデルが従量課金で使用できるとのことで経済的かと思いきや、付随して作成されるサービスによってコストがかかりました。
使えるAIモデルにも制限があり、セキュリティに厳しい会社やRAGを使いたいなどの要望がないと使うことはないかなという印象です。