Generative AI Use Cases JP をデプロイしてチャットを触ってみた

# [Generative AI Use Cases JP(GenU)](https://github.com/aws-samples/generative-ai-use-cases-jp)とは
> GenU は、生成 AI を安全に業務活用するための、ビジネスユースケース集を備えたアプリケーション実装です。

AWS により GitHub上で公開されている。生成 AI アプリケーションを簡単に AWS 環境にデプロイして試すことができる。
# なぜ試してみたのか
自分でデプロイしたことがなかったため。
# 必要なもの
- [AWSアカウント](https://signin.aws.amazon.com/signup?request_type=register)
- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)
- [AWS CDK](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
- [npm](https://www.npmjs.com/package/npm)
# 準備
リポジトリをクローンして、作成されたディレクトリに移動する。
```bash
git clone https://github.com/aws-samples/generative-ai-use-cases-jp.git
```
```bash
cd generative-ai-use-cases-jp
```
# デプロイ
[手順](https://github.com/aws-samples/generative-ai-use-cases-jp#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4) に沿ってコマンドを実行していく。

::: note warn
今回デプロイするリージョンはバージニア北部（us-east-1）となる。
リージョンは環境変数で指定できる。
```bash
export AWS_REGION=us-east-1
```
:::

まず下記コマンドを実行する。
```bash
npm ci
```
次に Bootstrap を行う。CDK を使ったことがない場合、初回のみ必要になる。
```bash
npx -w packages/cdk cdk bootstrap
```
最後にデプロイを実行する。
```bash
npm run cdk:deploy
```

デプロイには20分ほどかかるらしい。私の場合は15分ほどだった。
> ✨  Total time: 904.44s

CloudFormation Stacks を確認すると、GenerativeAiUseCasesStack が追加されていた。

![スクリーンショット 2024-11-22 145719.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/1cb4f54e-46fd-68f8-890b-825d1e87c59e.png)
# 触ってみる
早速UIにアクセスする。
GenerativeAiUseCasesStack の Outputs タブを開き、WebUrl のリンクを開く。

![CloudFormation Stacks - GenerativeAiUseCasesStack](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/b752689f-cb1c-7044-8cd5-d04999d68578.png)

すると、サインイン画面が表示される。
「アカウントを作る」タブを開き、ユーザー名とパスワードを入力して「アカウントを作る」ボタンをクリックする。

::: note warn
ユーザー名は、確認コードを受け取るためリアルなメールアドレスを入力する。
:::

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/3ad2105a-753d-53b5-f869-6a5579d95fd0.png" alt="code sent page" width="360">  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/a2e66476-1b7e-b4fa-96ac-0b52245c9a5b.png" alt="code sent page" width="360">

確認コードを入力すると、ユースケース一覧が表示された。

![スクリーンショット 2024-11-22 150711.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/b75eed3c-1ad8-95fb-7ee1-654c9851ade4.png)

今回はチャットを試した。
ユースケース一覧のチャットの「試す」ボタン、または左サイドバーの「チャット」をクリックだ。

![スクリーンショット 2024-11-22 151127.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/20fba939-7d15-0046-b242-547ed75b446e.png)

早速、サンプルテキストを送信したところ、「モデルが有効化されていない」と表示された。

![スクリーンショット 2024-11-22 151242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/90c2ef2b-7c14-7556-6cfc-b9ebbc3829da.png)

設定漏れに気付けるようになっていて親切だ。

::: note warn
### モデルを有効化する
[Amazon Bedrock の基盤モデルを利用するためには、モデルアクセスをリクエストして有効化する必要がある。](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access-modify.html)

「Bedrock コンソールの Model Access 画面」をクリックして、Amazon Bedrock の「Model Access」画面を開く。

![スクリーンショット 2024-11-22 151429.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/d4cbfd7e-13ec-a229-9cf8-592673d46a45.png)

「Enable specific models」をクリックすると、「Edit model access」画面が表示される。
Anthropic セクションの「Claude 3 Sonnet」を選択して、画面下部の「Next」ボタンをクリックする。

![スクリーンショット 2024-11-22 151459.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/07c6caca-087c-c0a4-b0da-b577918ff487.png)

Anthropic のモデルを利用する場合は、フォームに以下のような内容を入力する必要がある。
* 企業名
* 企業 Web サイト URL
* 事業領域
* 利用ユーザ
* ユースケース（個人情報や IP アドレス、Claude という用語は入力してはいけない）

入力したら「Next」ボタンをクリックする。

![スクリーンショット 2024-11-22 151530.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/c3cb7cb5-3acd-2d0c-496a-409d7cf2c3a4.png)

内容を確認して「Submit」ボタンをクリックする。

![スクリーンショット 2024-11-22 152356.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/17b49743-5fec-8eea-7818-da6cbe4131db.png)

Model Access 画面の Claude 3 Sonnet の Access Status が「In Progress」になった。
2～3分で「Access granted」となり使えるようになる。

![スクリーンショット 2024-11-22 152426.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/2babb39d-ac4d-4049-e5eb-66b2f29272ac.png)
:::

チャット画面に戻る。
もう一度サンプルテキストを送信したところ、回答してくれた。
（サンプルテキストは、チャット画面を開き直すと復活する）

![スクリーンショット 2024-11-22 153221.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/617ba1c0-9e25-4c2d-4d44-f65c45c49334.png)

# クリーンアップ
[説明](https://github.com/aws-samples/generative-ai-use-cases-jp/blob/main/docs/DESTROY.md) にあるコマンドを実行して、GenU のリソースを削除する。
```bash
npm run cdk:destroy
```

10分ほどで削除が完了した。

![スクリーンショット 2024-11-22 154520.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/17f0f0c9-9cfa-ec99-9fea-6b5beb50d63a.png)

私の場合、特にエラーは発生しなかったが、もし発生した場合はコンソールから S3 バケットを空にし、削除する必要がある。

CDK の Bootstrap で作成された CloudFormation Stack も、不要なので削除した。

![スクリーンショット 2024-11-22 155354.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/7076d1ea-bf1a-a481-7749-769fa3df98fa.png)

CDK 用の S3 バケットが残るようなので、コンソールからバケットを空にし、削除した。
（名前が「cdk-」で始まるバケットだ）
# 感想
GenU を使用すれば、簡単に生成 AI アプリケーションをデプロイしてチャットを試せることが確認できた。全体としてかかった時間は1~2時間程度だった。

GenU は誰でも簡単に、低コストで迅速に生成 AI のユースケースをデプロイして検証できる素晴らしいプロジェクトだ。すでに [活用事例](https://github.com/aws-samples/generative-ai-use-cases-jp?tab=readme-ov-file#%E3%81%8A%E5%AE%A2%E6%A7%98%E4%BA%8B%E4%BE%8B) も公開されている。 

今回は以下のようなユースケースがデフォルトでデプロイされた。

![スクリーンショット 2024-11-22 150935.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3816889/bca4800f-10b1-0cfe-7f04-77ec73b4c067.png)

この他にも、設定を有効化すれば「RAG チャット」や「Agent チャット」をデプロイし、試すことができるようだ。今回触れたのは「チャット」機能だけだったが、他の機能も試してみたい。

GenU は頻繁にアップデートされている（バージョン 2.0.0 がリリースされたのは、1.0.0 のリリースからわずか約1か月半後のことだ）。

今後のアップデートが楽しみだ。