Generative AI Use Cases (GenU) とは
オープンソースで提供されているAWS公式の生成AIのデモアプリです。
通常のチャットに加えて、RAG検索、画像生成、映像分析、ダイアグラム生成、議事録生成など様々な機能がデフォルトで実装されています。開発環境を構築すれば、数コマンドでアプリをデプロイして利用を開始することができます。
Generative AI Use Cases (GenU)
導入
開発環境構築
こちらを参考に開発環境を構築します。
検証を実施した環境は以下の通りです。
$ aws --version
aws-cli/2.14.5 Python/3.11.6 Linux/6.6.87.2-microsoft-standard-WSL2 exe/x86_64.ubuntu.22 prompt/off
$ node -v
v21.6.1
$ npx cdk --version
2.1024.0 (build 8be6aad)
※WindowsでWSLを使用しています。
認証情報設定
アクセスポータルの「アカウント」→「アクセスキー」をクリックし、ポップアップに表示されたプロファイルの内容をAWS認証情報ファイル (~/.aws/credentials) に貼り付けます。

[my_profile]
aws_access_key_id=&t;ACCESS_KEY_ID>
aws_secret_access_key=<SECRET_ACCESS_KEY>
aws_session_token=<SESSION_TOKEN>
デプロイ
GenUのリポジトリをクローンします。
git clone https://github.com/aws-samples/generative-ai-use-cases.git
以下のコマンドを実行し、パッケージのインストールとブートストラップ(AWS CDK の動作に必要なリソースの用意)を行います。
cd generative-ai-use-cases
npm ci
export AWS_PROFILE=my_profile # 以降のコマンドを実行するプロファイル
npx -w packages/cdk cdk bootstrap
上記により、CloudFormation に CDKToolkit のスタックが作成されます。

以下のコマンドを実行し、アプリをデプロイします。
npm run cdk:deploy
上記コマンドを実行すると、リソースが自動的に作成されていきます。途中で変更をデプロイするか確認されるため、念のため確認して問題がなければ「y」を入力して進めます。

デプロイが完了すると、Outputs最下部にGenUログイン用のURLが表示されます。

※ログインURLその他は CloudFormation の GenerativeAiUseCasesStack の出力タブで確認可能
URLにアクセスすると、ログイン画面が表示されます。

アカウントを作成してサインインすると、アプリのホーム画面が表示されます。

利用例
ユースケース
チャット
通常のChatGPTのように会話が可能です。

議事録生成
入力した音声やファイルをもとに文字起こしができます。

ダイアグラム作成
プロンプトに基づいてダイアグラムが作成されます。
ダイアグラムはフローチャート、円グラフ、マインドマップを選択可能です。

生成されたダイアグラムはSVGやPNGでダウンロードすることもできます。
ビルダーモード
左上のビルダーモードをオンにすると、用途に応じた様々な機能を利用できます。

「新規作成」で独自のユースケースを作成することも可能です。

セキュリティ
デフォルトでは、Cognitoを利用したユーザ認証機能が提供されています。
デプロイオプションで以下を設定でき、セキュリティ要件に応じてアクセス元を制限したり認証方法を変更したりできます。
- セルフサインアップの無効化
- サインアップできるメールアドレスのドメイン制限
- AWS WAFによる制限
- IPアドレスによる制限
- 地理的制限
- SAML認証(Google Workspace, Microsoft Entra ID)
コスト
RAGの選択肢には Bedrock Knowledge Bases と Kendra がありますが、性能に大きな差はなく、Kendra に比べて安価であるため、Bedrock Knowledge Bases を利用した場合について見積もりを出してみます。
Bedrock Knowledge BasesによるRAG実装
利用ユーザー数50人、利用頻度1日10回質問、1質問あたり1000入力トークン、1回答あたり400出力トークン、1カ月に22日利用すると想定した場合、月額42,757円となります。

コストの大部分は Bedrock と OpenSearch Service が占めています。OpenSearch Service でベースコストがかさむものの、ユーザ数が増えてもコストが大きく跳ね上がらない点がメリットです。
ライセンス
GenUのライセンスはMIT-0であり、以下の特徴をもちます。
- コードを自由に利用、改変、配布可能
- 商用利用可能
- 他のプロジェクトに組み込んで利用しても良い
- 著作権表記が不要(通常のMITライセンスでは元の著作権表記を残す必要があるが、MIT-0では不要)
- 提供されるコードの保証はしない
そのため、自社サービス用にカスタマイズして販売することも可能です。
アップデート
GenUは定期的にアップデートされています。
既存のGenUをアップデートする方法は以下の通りです。
mainブランチの場合
git branch # mainブランチにいることを確認
git pull origin main # 最新のmainを取得
npm run cdk:deploy # デプロイ実行
その他ブランチの場合
git branch # mainブランチにいることを確認
git pull origin main # 最新のmainを取得
git checkout feat/reinvent-qa # 対象ブランチに移動
git merge main # mainブランチをマージ
npm run cdk:deploy # デプロイ実行
▶ エラーが発生した場合(クリックして展開)
TSError: ⨯ Unable to compile TypeScript:
lib/construct/closedNetwork/closed-vpc.ts:12:49 - error TS2551: Property 'BEDROCK_AGENTCORE' does not exist on type 'typeof InterfaceVpcEndpointAwsService'. Did you mean 'BEDROCK\_AGENT'?
上記のエラーは型定義が存在しないため発生しています。以下のコマンドで型定義をインストールします。
npm install @types/generative-ai-use-cases --save-dev
GenUのデプロイは、CloudFormation の既存スタック(GenerativeAiUseCasesStack${env})の情報をもとに実行され、変更対象のリソースのみが更新されます。


