aws-samples/bedrock-chat
AWS-native chatbot using Bedrock
Bedrock Chat (BrChat) – 概要
Bedrock Chat は、Amazon Bedrock およびその他の AWS マネージドサービス上に構築された、すぐに利用可能なマルチテナントチャットボットプラットフォームです。以下のことが可能です:
- チャットボットの作成と実行:基盤モデル(Claude, Amazon Nova, Llama 3, Mistral など)を使用します。
- プライベート知識の追加:RAG (Retrieval-Augmented Generation) を使用してボットに知識を追加します。ドキュメントのアップロード、または既存の Bedrock Knowledge Base のインポートが可能です。
- ボットの公開:bot store に公開して、同じ AWS アカウント内の他のユーザーが発見・利用できるようにしたり、ボットをスタンドアロンの API として公開したりできます。
- エージェントの実行:外部ツールを呼び出したり、リクエストを複数のステップに分割したりできます。
- 作成権限の制御:Amazon Cognito グループ (
CreatingBotAllowed) を介して、誰がボットを作成できるかを制御します。 - 利用状況の分析:管理監督のためにボットを「必須 (essential)」としてマークできます。
特徴
- オール AWS スタック – サーバー管理は不要です。DynamoDB, API Gateway, Lambda (FastAPI), OpenSearch Serverless, Cognito, WAF, Step Functions, EventBridge Pipes, Athena などを統合しています。
- マルチテナント知識ベース – 単一の共有 Bedrock Knowledge Base が多くのボットにサービスを提供でき、各ボットのドキュメントはメタデータで分離されるため、アカウントごとの 100-KB 制限を回避できます。
- 本番環境対応のセキュリティ – オプションの IP 範囲制限、IPv6 トグル、自己登録制御、低レイテンシのための Lambda SnapStart、詳細な IAM 制御。
- 拡張可能なモデルリスト – 設定により、ドロップダウンを Bedrock モデルのサブセット(Claude, Nova, Llama 3, Mistral, DeepSeek)に制限できます。
- 簡単なデプロイ – ワンクリックの CloudShell スクリプト (
bin.sh) または完全な CDK デプロイ。型安全なparameter.tsを使用して、複数の環境(dev, prod など)をサポートします。
主要コンポーネント(高レベルアーキテクチャ)
| コンポーネント | 役割 |
|---|---|
| Amazon Bedrock | チャットおよび RAG 用の埋め込み生成に使用される大規模言語モデルを提供。 |
| Bedrock Knowledge Bases + OpenSearch Serverless | ドキュメントを保存し、RAG 用のベクトル検索および全文検索を実行。 |
| DynamoDB | 会話履歴とボットのメタデータを永続化。 |
| Lambda + API Gateway (FastAPI) | React フロントエンドが通信するバックエンド API。 |
| Cognito | ユーザーのサインアップ/サインインおよびグループベースの権限管理。 |
| CloudFront + S3 | React/Tailwind UI を配信。 |
| WAF | オプションの IP アドレス許可/拒否リスト。 |
| Step Functions | ドキュメントの取り込みおよび埋め込みパイプラインをオーケストレーション。 |
| EventBridge Pipes | ボット削除イベントをリッスンし、関連する CloudFormation スタックを削除。 |
| Athena | 管理者が生データを保存する S3 バケットに対してアドホッククエリを実行可能。 |
はじめ方(クイックスタート手順)
- ターゲットリージョン(例: us-east-1)で Bedrock モデルへのアクセスを有効化 します。
- そのリージョンで CloudShell を開き、以下を実行します:
git clone https://github.com/aws-samples/bedrock-chat.git cd bedrock-chat chmod +x bin.sh ./bin.sh # プロンプトに従い、必要に応じて --disable-self-register などのフラグを追加 - 約 35 分後、スクリプトが Frontend URL (CloudFront) を出力します。これを開いてサインアップ(または管理者がユーザーを作成)すると、チャット UI が表示されます。
- UI を使用して ボットを作成 し、ドキュメントをアップロードまたは知識ベースをインポートして、チャットを開始します。ボットをストアに公開したり、API として利用したりすることも可能です。
カスタマイズ用パラメータ(オプション)
| フラグ | 内容 |
|---|---|
--disable-self-register |
公開サインアップを無効化。Cognito で作成されたユーザーのみログイン可能。 |
--enable-lambda-snapstart |
Lambda のコールドスタートを高速化する SnapStart を有効化。 |
--ipv4-ranges / --ipv6-ranges |
UI/API へのアクセスを特定の IP CIDR ブロックに制限。 |
--disable-ipv6 |
IPv6 トラフィックを完全に無効化。 |
--allowed-signup-email-domains |
サインアップを特定のメールアドレスドメインに制限。 |
--bedrock-region |
Bedrock モデルを呼び出すリージョンを選択。 |
--globalAvailableModels |
デプロイ全体で Bedrock モデル ID のサブセットをホワイトリスト化。 |
--cdk-json-override |
CDK コンテキスト値の直接 JSON 上書き(例: RAG レプリカの有効化、ロゴの変更)。 |
推奨される用途
- 企業:インフラをゼロから構築することなく、内部向けの安全なチャットボットプラットフォームを求める組織。
- 開発者:AWS 上でのフルスタック LLM アプリケーションの実装リファレンスを探している方。
- プロダクトチーム:複数のチームが専門的なアシスタントを公開・共有できるボットストアが必要なチーム。
- データエンジニア:Bedrock Knowledge Bases を使用して RAG パイプラインを試したい方。
制限事項と考慮事項
- このソリューションは、Bedrock、OpenSearch Serverless、およびリストされている他のサービスが利用可能な AWS リージョンでのみ動作します。
- デフォルトでは URL を持つ誰でも自己登録可能です。本番環境では提供されているフラグを使用して制限をかける必要があります。
- マルチテナント知識ベースはメタデータフィルタリングに依存しています。ドキュメント取り込み時に正しい Bot-ID タグが追加されるようにしてください。
- V2 から V3 へのアップグレードには移行ガイドに従う必要があります。そうしないと、V2 で作成されたボットは使用できなくなります。
詳細情報
- ワークショップ – ステップバイステップのハンズオンラボが提供されています(README 内のリンクを参照)。
- アーキテクチャ図 –
docs/imgs/arch.pngで AWS サービスのグラフを視覚化しています。 - エージェントドキュメント –
docs/AGENT.mdでツール呼び出しやマルチステップ推論の有効化方法を解説しています。 - 管理者ガイド –
docs/ADMINISTRATOR.mdでボット分析、必須ボットフラグ、API 管理について説明しています。
まとめ
Bedrock Chat は、RAG、ボットマーケットプレイス、オプションのエージェント機能を備えた AWS ネイティブなマルチテナントチャットボットプラットフォームです。単一のスクリプトでデプロイし、CLI フラグや CDK コンテキストを使用してセキュリティ、モデルアクセス、環境をカスタマイズできます。Amazon Bedrock 上で生成 AI アプリケーションを構築するための、実用的で本番環境グレードの例です。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト