English | 日本語 | 한국어 | 中文 | Français | Deutsch | Español | Italian | Norsk | ไทย | Bahasa Indonesia | Bahasa Melayu | Tiếng Việt | Polski
Warning
V2がリリースされました。更新する際は、移行ガイドを慎重に確認してください。 注意せずに更新すると、V1のBOTは使用できなくなります。
Amazon Bedrockが提供する大規模言語モデル(LLM)を使用した多言語チャットボット。
独自の指示を追加し、URLやファイルで外部知識を提供できます(RAG)。ボットはアプリケーションユーザー間で共有できます。カスタマイズされたボットはスタンドアロンAPIとして公開することもできます(詳細参照)。
Important
ガバナンス上の理由から、許可されたユーザーのみがカスタマイズされたボットを作成できます。カスタマイズされたボットの作成を許可するには、ユーザーがCreatingBotAllowed
グループのメンバーである必要があります。これは管理コンソール > Amazon Cognito ユーザープールまたはAWS CLIで設定できます。ユーザープールIDは、CloudFormation > BedrockChatStack > Outputs > AuthUserPoolIdxxxx
からアクセスできます。
LLMベースのエージェント
エージェント機能を使用することで、チャットボットはより複雑なタスクを自動的に処理できます。例えば、ユーザーの質問に答えるために、エージェントは外部ツールから必要な情報を取得したり、タスクを複数のステップに分解して処理したりできます。
- us-east-1リージョンで、Bedrockモデルアクセスを開き >
モデルアクセスの管理
>Anthropic / Claude 3
のすべて、Amazon / Nova
、Amazon / Titan Text Embeddings V2
、Cohere / Embed Multilingual
をすべてチェックし、変更を保存
をクリックします。
- デプロイしたいリージョンでCloudShellを開きます
- 以下のコマンドでデプロイを実行します。デプロイするバージョンを指定したい場合や、セキュリティポリシーを適用する必要がある場合は、オプションパラメータから適切なパラメータを指定してください。
git clone https://github.com/aws-samples/bedrock-claude-chat.git
cd bedrock-claude-chat
chmod +x bin.sh
./bin.sh
- 新規ユーザーか、v2を使用するかを尋ねられます。v0からの継続ユーザーでない場合は、
y
を入力してください。
デプロイ時に以下のパラメータを指定して、セキュリティとカスタマイズを強化できます:
- --disable-self-register: 自己登録を無効化(デフォルト:有効)。このフラグが設定されている場合、Cognitoですべてのユーザーを作成する必要があり、ユーザーは自分でアカウントを登録できません。
- --enable-lambda-snapstart: Lambda SnapStartを有効化(デフォルト:無効)。このフラグが設定されている場合、Lambdaファンクションのコールドスタート時間を改善し、ユーザーエクスペリエンスを向上させます。
- --ipv4-ranges: 許可されたIPv4範囲のカンマ区切りリスト。(デフォルト:すべてのIPv4アドレスを許可)
- --ipv6-ranges: 許可されたIPv6範囲のカンマ区切りリスト。(デフォルト:すべてのIPv6アドレスを許可)
- --disable-ipv6: IPv6経由の接続を無効化。(デフォルト:有効)
- --allowed-signup-email-domains: サインアップに許可されたメールドメインのカンマ区切りリスト。(デフォルト:ドメイン制限なし)
- --bedrock-region: Bedrockが利用可能なリージョンを定義。(デフォルト:us-east-1)
- --repo-url: デプロイするBedrock Claude Chatのカスタムリポジトリ(フォークまたはカスタムソース管理の場合)。(デフォルト:https://github.com/aws-samples/bedrock-claude-chat.git)
- --version: デプロイするBedrock Claude Chatのバージョン。(デフォルト:開発中の最新バージョン)
- --cdk-json-override: デプロイ時にCDKコンテキスト値を上書きできます。これにより、cdk.jsonファイルを直接編集せずに設定を変更できます。
使用例:
./bin.sh --cdk-json-override '{
"context": {
"selfSignUpEnabled": false,
"enableLambdaSnapStart": true,
"allowedIpV4AddressRanges": ["192.168.1.0/24"],
"allowedSignUpEmailDomains": ["example.com"]
}
}'
上書きJSONはcdk.jsonと同じ構造に従う必要があります。以下を含む任意のコンテキスト値を上書きできます:
selfSignUpEnabled
enableLambdaSnapStart
allowedIpV4AddressRanges
allowedIpV6AddressRanges
allowedSignUpEmailDomains
bedrockRegion
enableRagReplicas
enableBedrockCrossRegionInference
- cdk.jsonで定義されたその他のコンテキスト値
Note
上書き値は、AWS CodeBuildでのデプロイ時に既存のcdk.json設定とマージされます。指定された上書き値は、cdk.jsonの値よりも優先されます。
./bin.sh --disable-self-register --ipv4-ranges "192.0.2.0/25,192.0.2.128/25" --ipv6-ranges "2001:db8:1:2::/64,2001:db8:1:3::/64" --allowed-signup-email-domains "example.com,anotherexample.com" --bedrock-region "us-west-2" --version "v1.2.6"
- 約35分後、以下の出力が表示され、ブラウザからアクセスできます
フロントエンドURL: https://xxxxxxxxx.cloudfront.net
上記のようにサインアップ画面が表示され、メールを登録してログインできます。
Important
オプションパラメータを設定しない場合、URLを知っている人は誰でもサインアップできます。本番環境では、セキュリティリスクを軽減するために、IPアドレス制限と自己サインアップの無効化を強くお勧めします(allowed-signup-email-domainsを定義して、会社のドメインのメールアドレスのみがサインアップできるように制限できます)。./binを実行する際は、ipv4-rangesとipv6-rangesでIPアドレス制限を設定し、disable-self-registerを使用して自己サインアップを無効にしてください。
Tip
フロントエンドURL
が表示されないか、Bedrock Claude Chatが正常に動作しない場合、最新バージョンに問題がある可能性があります。その場合は、--version "v1.2.6"
をパラメータに追加してデプロイを再試行してください。
AWS管理サービスを基盤とするアーキテクチャで、インフラ管理の必要性を排除しています。Amazon Bedrockを利用することで、AWS外のAPIと通信する必要がありません。これにより、スケーラブルで信頼性が高く、セキュアなアプリケーションを展開できます。
- Amazon DynamoDB:会話履歴を保存するNoSQLデータベース
- Amazon API Gateway + AWS Lambda:バックエンドAPIエンドポイント(AWS Lambda Web Adapter、FastAPI)
- Amazon CloudFront + S3:フロントエンドアプリケーションの配信(React、Tailwind CSS)
- AWS WAF:IPアドレス制限
- Amazon Cognito:ユーザー認証
- Amazon Bedrock:APIを通じて基盤モデルを利用する管理サービス
- Amazon Bedrock ナレッジベース:検索拡張生成(RAG)のための管理インターフェースを提供し、ドキュメントの埋め込みと解析サービスを提供
- Amazon EventBridge Pipes:DynamoDBストリームからイベントを受信し、外部知識を埋め込むStep Functionsを起動
- AWS Step Functions:外部知識をBedrockナレッジベースに埋め込むための取り込みパイプラインのオーケストレーション
- Amazon OpenSearch Serverless:Bedrockナレッジベースのバックエンドデータベースとして機能し、全文検索とベクター検索機能を提供し、関連情報の正確な検索を可能にする
- Amazon Athena:S3バケットを分析するクエリサービス
超簡単デプロイは、デプロイ内部でAWS CodeBuildを使用してCDKによりデプロイを実行します。このセクションでは、直接CDKでデプロイする手順を説明します。
- UNIX、Docker、Node.jsランタイム環境が必要です。ない場合は、Cloud9を使用することもできます。
Important
デプロイ中にローカル環境のストレージ容量が不足している場合、CDKブートストラップでエラーが発生する可能性があります。Cloud9などで実行している場合は、デプロイ前にインスタンスのボリュームサイズを拡張することをお勧めします。
- リポジトリをクローン
git clone https://github.com/aws-samples/bedrock-claude-chat
- npmパッケージをインストール
cd bedrock-claude-chat
cd cdk
npm ci
-
必要に応じて、cdk.jsonの以下のエントリを編集します。
bedrockRegion
: Bedrockが利用可能なリージョン。注意:現在、Bedrockはすべてのリージョンをサポートしているわけではありません。allowedIpV4AddressRanges
、allowedIpV6AddressRanges
: 許可されたIPアドレス範囲。enableLambdaSnapStart
: デフォルトはtrueです。Pythonの関数のLambda SnapStartをサポートしていないリージョンにデプロイする場合は、falseに設定します。
-
CDKをデプロイする前に、デプロイするリージョンに対して一度ブートストラップする必要があります。
npx cdk bootstrap
- このサンプルプロジェクトをデプロイ
npx cdk deploy --require-approval never --all
- 以下のような出力が得られます。WebアプリのURLは
BedrockChatStack.FrontendURL
に出力されるので、ブラウザからアクセスしてください。
✅ BedrockChatStack
✨ Deployment time: 78.57s
Outputs:
BedrockChatStack.AuthUserPoolClientIdXXXXX = xxxxxxx
BedrockChatStack.AuthUserPoolIdXXXXXX = ap-northeast-1_XXXX
BedrockChatStack.BackendApiBackendApiUrlXXXXX = https://xxxxx.execute-api.ap-northeast-1.amazonaws.com
BedrockChatStack.FrontendURL = https://xxxxx.cloudfront.net
cdk.jsonのenableMistral
をtrue
に更新し、npx cdk deploy
を実行します。
...
"enableMistral": true,
[!重要] このプロジェクトはAnthropicのClaudeモデルに焦点を当てており、Mistralモデルは限定的にサポートされています。例えば、プロンプトの例はClaudeモデルに基づいています。これはMistral専用のオプションであり、一度Mistralモデルを有効にすると、すべてのチャット機能でMistralモデルのみを使用でき、ClaudeとMistralの両方のモデルは使用できません。
ユーザーは、カスタムボット作成画面からテキスト生成パラメータを調整できます。ボットが使用されない場合、config.pyで設定されたデフォルトパラメータが使用されます。
DEFAULT_GENERATION_CONFIG = {
"max_tokens": 2000,
"top_k": 250,
"top_p": 0.999,
"temperature": 0.6,
"stop_sequences": ["Human: ", "Assistant: "],
}
CLIとCDKを使用している場合は、npx cdk destroy
を実行してください。そうでない場合は、CloudFormationにアクセスし、BedrockChatStack
とFrontendWafStack
を手動で削除してください。FrontendWafStack
はus-east-1
リージョンにあることに注意してください。
このアセットは、i18next-browser-languageDetectorを使用して言語を自動的に検出します。アプリケーションメニューから言語を切り替えることができます。または、以下のようにクエリ文字列を使用して言語を設定することもできます。
https://example.com?lng=ja
このサンプルはデフォルトでセルフサインアップが有効になっています。セルフサインアップを無効にするには、cdk.jsonを開き、selfSignUpEnabled
をfalse
に切り替えます。外部IDプロバイダを設定する場合、この値は無視され、自動的に無効になります。
デフォルトでは、このサンプルはサインアップ可能なメールアドレスのドメインを制限しません。特定のドメインからのみサインアップを許可するには、cdk.json
を開き、allowedSignUpEmailDomains
にドメインをリストとして指定します。
"allowedSignUpEmailDomains": ["example.com"],
このサンプルは外部IDプロバイダをサポートしています。現在、GoogleとカスタムOIDCプロバイダをサポートしています。
このサンプルには、ユーザーに権限を与えるために以下のグループがあります:
新規作成されたユーザーを自動的にグループに参加させたい場合は、cdk.jsonで指定できます。
"autoJoinUserGroups": ["CreatingBotAllowed"],
デフォルトでは、新規作成されたユーザーはCreatingBotAllowed
グループに参加します。
(以下、同様に翻訳が続きます)
このライブラリは MIT-0 ライセンスの下でライセンス供与されています。ライセンスファイルを参照してください。