Skip to content

Latest commit

 

History

History
236 lines (162 loc) · 11.2 KB

README_ja.md

File metadata and controls

236 lines (162 loc) · 11.2 KB

Bedrock Claude Chat

Tip

🔔**Claude v3 (Sonnet) による画像とテキスト両方を使ったチャットが可能になりました。** 詳細はReleaseをご確認ください。

Warning

現在のバージョン(v0.4.x)は、DynamoDB テーブルスキーマの変更のため、過去バージョン(~v0.3.0)とは互換性がありません。以前のバージョンから v0.4.x へアップデートすると、既存の対話記録は全て破棄されますので注意が必要です。

このリポジトリは、生成系 AI を提供するAmazon Bedrockの基盤モデルの一つである、Anthropic 社製 LLM Claudeを利用したチャットボットのサンプルです。

基本的な会話

Claude 3 Sonnetによるテキストと画像の両方を利用したチャットが可能です。

Note

現在画像は DynamoDB アイテムサイズ制限 のため 800px jpeg へ変換されます。Issue

ボットのカスタマイズ

外部のナレッジおよび具体的なインストラクションを組み合わせ、ボットをカスタマイズすることが可能です(外部のナレッジを利用した方法はRAGとして知られています)。なお、作成したボットはアプリケーションのユーザー間で共有することができます。

🚀 まずはお試し

  • us-east-1 リージョンにて、Bedrock Model access > Manage model access > Anthropic / Claude, Anthropic / Claude Instant, Anthropic / Claude 3 Sonnet, Cohere / Embed Multilingualをチェックし、Save changesをクリックします
スクリーンショット

- [CloudShell](https://console.aws.amazon.com/cloudshell/home)をデプロイしたいリージョン (ap-northeast-1など) で開きます
  • 下記のコマンドでデプロイ実行します
git clone https://github.com/aws-samples/bedrock-claude-chat.git
cd bedrock-claude-chat
chmod +x bin.sh
./bin.sh
  • 30 分ほど経過後、下記の出力が得られるのでブラウザからアクセスします
Frontend URL: https://xxxxxxxxx.cloudfront.net

上記のようなサインアップ画面が現れますので、E メールを登録・ログインしご利用ください。

Important

このデプロイ方法では、URL を知っている誰でもサインアップできてしまいます。本番運用で使用する場合は、セキュリティリスクを軽減するために IP アドレス制限やセルフサインアップの無効化を強くお勧めします。設定方法は、IP アドレス制限の場合はDeploy using CDK、セルフサインアップの無効化の場合はセルフサインアップを無効化するをご覧ください。

アーキテクチャ

AWS のマネージドサービスで構成した、インフラストラクチャ管理の不要なアーキテクチャとなっています。Amazon Bedrock の活用により、 AWS 外部の API と通信する必要がありません。スケーラブルで信頼性が高く、安全なアプリケーションをデプロイすることが可能です。

機能・ロードマップ

基本

  • 認証 (サインアップ・サインイン)
  • 会話の新規作成・保存・削除
  • チャットボットの返信内容のコピー
  • 会話の件名自動提案
  • コードのシンタックスハイライト
  • マークダウンのレンダリング
  • ストリーミングレスポンス
  • IP アドレス制限
  • メッセージの編集と再送
  • I18n
  • モデルの切り替え (Claude Instant / Claude)

カスタマイズボット

  • カスタマイズボットの作成
  • カスタマイズボットのシェア

RAG

  • Web (html)
  • テキストデータ (txt, csv, markdown and etc)
  • PDF
  • Microsoft オフィス (pptx, docx, xlsx)
  • Youtube 字幕

管理者用機能

  • ユーザーの利用状況分析

Deploy using CDK

上記 Easy Deployment はAWS CodeBuildを利用し、内部で CDK によるデプロイを実行しています。ここでは直接 CDK によりデプロイする手順を記載します。

  • お手元に UNIX コマンドおよび Node.js, Docker 実行環境を用意してください。もし無い場合、Cloud9をご利用いただくことも可能です。

Note

デプロイ時にローカル環境のストレージ容量が不足すると CDK のブートストラップがエラーとなってしまう可能性があります。Cloud9 等で実行される場合は、インスタンスのボリュームサイズを拡張のうえデプロイ実施されることをお勧めします。

  • このリポジトリをクローンします
git clone https://github.com/aws-samples/bedrock-claude-chat
  • npm パッケージをインストールします
cd bedrock-claude-chat
cd cdk
npm ci
  • AWS CDKをインストールします
npm i -g aws-cdk
  • CDK デプロイ前に、デプロイ先リージョンに対して 1 度だけ Bootstrap の作業が必要となります。ここでは東京リージョンへデプロイするものとします。なお<account id>はアカウント ID に置換してください。
cdk bootstrap aws://<account id>/ap-northeast-1
  • 必要に応じてcdk.jsonの下記項目を編集します

    • bedrockRegion: Bedrock が利用できるリージョン
    • allowedIpV4AddressRanges, allowedIpV6AddressRanges: 許可する IP アドレス範囲の指定
  • プロジェクトをデプロイします

cdk deploy --require-approval never --all
  • 下記のような出力が得られれば成功です。BedrockChatStack.FrontendURLに WEB アプリの URL が出力されますので、ブラウザからアクセスしてください。
 ✅  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

その他

テキスト生成パラメータ・ベクトル埋め込みパラメータの設定

config.pyを編集後、cdk deployを実行してください。

GENERATION_CONFIG = {
    "max_tokens_to_sample": 500,
    "temperature": 0.6,
    "top_k": 250,
    "top_p": 0.999,
    "stop_sequences": ["Human: ", "Assistant: "],
}

EMBEDDING_CONFIG = {
    "model_id": "amazon.titan-embed-text-v1",
    "chunk_size": 1000,
    "chunk_overlap": 100,
}

リソースの削除

cli および CDK を利用されている場合、cdk destroyを実行してください。そうでない場合はCloudFormationへアクセスし、手動でBedrockChatStackおよびFrontendWafStackを削除してください。なおFrontendWafStackus-east-1 リージョンにあります。

言語設定について

このアセットは、i18next-browser-languageDetector を用いて自動で言語を検出します。もし任意の言語へ変更されたい場合はアプリケーション左下のメニューから切り替えてください。なお以下のように Query String で設定することも可能です。

https://example.com?lng=ja

セルフサインアップを無効化する

このサンプルはデフォルトでセルフサインアップが有効化してあります。セルフサインアップを無効にするには、auth.tsを開き、selfSignUpEnabledfalse に切り替えてから再デプロイしてください。

const userPool = new UserPool(this, "UserPool", {
  passwordPolicy: {
    requireUppercase: true,
    requireSymbols: true,
    requireDigits: true,
    minLength: 8,
  },
  // true -> false
  selfSignUpEnabled: false,
  signInAliases: {
    username: false,
    email: true,
  },
});

ローカルでの開発について

Pull Request

バグ修正や機能追加など、Pull Request は大変ありがたく思っています。下記をご参考にしていただけますと幸いです。

RAG (Retrieval Augmented Generation, 検索拡張生成)

こちらを参照