生成AIのユースケース(活用事例)が学べるWebサイト generative-ai-use-cases-jp のデプロイ方法をご紹介します。

generative-ai-use-cases-jpとは

generative-ai-use-cases-jpは、AWSが生成AIのユースケースをデモするためのReact製のWebサイトで、githubで無償公開されています。クローンして自社のAWS環境にデプロイすれば、社内データを読み込ませたRAGチャットなどさまざまな生成AIを試すことができます。デプロイの所要時間は10分程度です。

フロントエンドは React を用いて実装し、静的ファイルは Amazon CloudFront + Amazon S3 によって配信されています。バックエンドには Amazon API Gateway + AWS Lambda、認証には Amazon Congito を使用しています。また、LLM は Amazon Bedrock を使用します。RAG のデータソースには Amazon Kendra を利用しています。

aws-samples/generative-ai-use-cases-jp: Generative AI を活用したビジネスユースケースのデモンストレーション – https://github.com/aws-samples/generative-ai-use-cases-jp

※今回は点線以外のデプロイについて解説します。
※AWSアカウントが必要です。
※月額費用が発生します。

今回は手元にクローンせずにAWS環境のみでデプロイしたいと思います。

Cloud9 環境の作成

まずはAWSにサインインし、クラウドIDEの「Cloud9」の立ち上げましょう。Cloud9とはブラウザのみでEC2インスタンスを操作したり、ソースコードを編集できたりするIDE(統合開発環境)です。

AWSの検索バーにCloud9と入力して起動してください。

今までにCloud9を利用したことがない場合は次のような画面が表示されます。画面右手の 環境を作成 へ進みましょう。

環境作成画面が表示されたら次のように設定します。

  • 名前: generative-ai-use-cases-jp
  • 環境タイプ: 新しいEC2インスタンス
  • インスタンスタイプ: t3.small (2 GiB RAM + 2 vCPU)
  • プラットフォーム: Amazon Linux 2023
  • ネットワーク設定: AWS Systems Manager (SSM)

このへんは慣れている環境・設定で問題ありません。

作成 へ進むとCloud9のTopページに戻るので、一覧に作成した環境があるか確認しましょう。

EC2の設定

次にCloud9で起動したEC2インスタンスの設定を行います。

前の手順が終わっていれば、起動中のEC2インスタンスの中に作成したものがあるはずです。ここではわかりやすく GenerativeAiUseCasesJp という名前に変更しました。

IAMロールの変更

作成したインスタンスを選択肢、右上の インスタンスの状態 プルダウンから セキュリティ -> IAMロール を変更しましょう。

IAMロールの変更画面が表示されたら 新しいIAMロールを作成 をクリックします。

ロール作成画面に繊維したら、信頼されたエンティティタイプに AWSのサービス を選択肢、ユースケースの検索バーに EC2 と入力してください。

ポリシー一覧が出てきたら AdministratorAccess を選択します。 Amazon BedrockやAmazon Kendra、S3、Cloudfrontなどさまざまなサービスを操作するためです。

ロール名には GenerativeAiUseCasesJp など適当な名前をつけてください。

さきほどのIAMロール変更画面に戻りますので、さきほど作成した GenerativeAiUseCasesJp ロールをアタッチします。

EC2の設定はこれでおしまいです。

Cloud9の設定変更

Cloud9に戻ると次のような画面が表示されますので 開く ボタンをクリックしてさきほど作成したgenerative-ai-use-cases-jpの環境を開いてみましょう。

起動したら次の通り、右上の 歯車(⚙) -> AWS Settings -> AWS managed temporary credentials をオフにします。(デフォルトではオンになっています)これでCloud9の設定もおしまいです。

generative-ai-use-cases-jpのデプロイ

準備が整ったところでさっそくデプロイしましょう。
まずは次の画面のとおりに -> New Terminal でターミナル画面をひらきます。

ターミナルが開いたらリポジトリをCloneします。

git clone https://github.com/aws-samples/generative-ai-use-cases-jp.git

Cloneが終わったらディレクトリを移動しましょう。

cd generative-ai-use-cases-jp/

次に必要なパッケージをインストールします。

npm ci

完了したらAWSの設定を行います。

aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name[None]: us-east-1
Default output format [None]:

Default region name以外は入力しなくても問題ありません。

なぜus-east-1リージョンか

2024年4月15日現在、東京リージョンではAmazon BedrockでClaudeやStable DiffusionなどのLLMの最新バージョンが利用できません。このため、generative-ai-use-cases-jpのデプロイ先は東京リージョンでも問題ありませんが、generative-ai-use-cases-jpが利用するサービスは最新版LLMが利用できるリージョンにしたほうがいいでしょう。もちろん最新版じゃなくてもよければ、東京や大阪リージョンでもデプロイして利用することはできます。今回はソースコードに記載されたus-east-1を使用します。

  • us-east-1(バージニア北部): Anthropic Claude 3 Sonnet
  • ap-northeast-1(東京): Anthropic Claude 2.1

LLMのリージョンを変える場合

modelsResion を変更しましょう。
その場合は、リージョンに対応しているLLMのバージョンに合わせてmodelIds も変更します。

vi packages/cdk/cdk.json

Amazon Bedrockを有効化

使用するリージョンを選択した状態でAmazon Bedrockを有効化し、ClaudeのプロバイダであるAnthoropicにユースケースを申請しておきましょう。今回はClaudeとStable Diffusionを有効化しました。簡単な手続きで、数分で許可が降ります。

bootstrapしておきましょう

もしデプロイ先のリージョンでこれまでにCDKToolkitを使用したことがなければ、次のコマンドでbootstrapする必要があります。しておきましょう。

npx -w packages/cdk cdk bootstrap

デプロイ

次のコマンドでデプロイします。

npm run cdk:deploy

途中で最新版の変更を反映させるか聞かれるので y と入力しましょう。
デプロイ完了までに5~10分かかります。

デプロイ先URLの確認

デプロイが完了したらターミナルに以下のようなオプションが表示されます。

GenarativeAiUseCasesStack.WebUrl = https://xxxxxxx.cloudfront.net

WebURLにそのままアクセスするもよし、CloudfrontやRoute53などを設定し、ドメインを割り当ててもお使いいただけます。

使ってみよう

URLにアクセスすると次のような画面が表示されます。
アカウントを作る タブからアカウントを作成しましょう。

アカウント作成後、次のような画面が表示されます。

チャットの デモ でLLMとチャットできることを確認しましょう。

エラーが出たら

もしチャットが失敗するようなら、選択したリージョンでAmazon Bedrockが有効化されていない可能性があります。AWSコンソールでリージョンを選択し、Amazon Bedrockを有効化したのち、モデルアクセス管理から使用するLLMを有効化してみてください。

概算費用

AWSのWorkshopの通りに手順を踏むと、下記の月額費用が発生します。

  • 無料枠を考慮した際のコスト:320.7USD/月(概算)
  • 無料枠を考慮しない場合のコスト:1143.67USD/月(概算)

RAGチャットをオンにすると、Amazon KendraのDeveloper Editionの費用 (810 USD/月)が発生しますが、Amazon Kendraは無料枠があります。最初の 30日間で最大750時間の無料利用枠です。Amazon Kendraを使用する場合のおもなコストはAmazon Bedrockです。Amazon Bedrockを使用しなければコストはスパイクしないはずです。もし気になるようなら数日ごとにコストをチェックしましょう。

本チュートリアルで構築される場合は、そこまでコストはかかりませんが、ご使用は自己責任でお願いします。