はじめに

この記事は「もくもく会ブログリレー」 15日目 の記事です。

こんにちは、こまきちです。
生成AIブームの流れに完全に乗り遅れた私ですが、ようやく話題のGenerative AI Use Cases JP(通称GenU)を使ってデプロイ〜カスタマイズまで行ってみました。

GenUとは?

GenUは、Amazon Bedrockを使用した生成AIのRAG(Retrieval-Augmented Generation)チャットなどを迅速に構築できるように設計されたオープンソースの生成AIデモアプリケーションです。AWSの有志社員が開発しており、このアプリケーションを立ち上げた際の費用概算も公開されています。
社内知識を活用した生成 AI チャットボットを構築したい

GenUには以下の機能がすでに実装されているため、数個のコマンドを実行するだけでAWSの生成AIのユースケースを体験できます。
(2024年7月7日時点)

  • チャット
  • RAG
  • Agentチャット
  • 文章生成
  • 要約
  • 校正
  • 翻訳
  • Webコンテンツ抽出
  • 画像生成
  • 映像分析

これらの機能に関しては、西田さんの記事で分かりやすく紹介されています!

バンダイナムコアミューズメント様導入事例とGenerative AI Use Cases JPについて

GenUの素晴らしい点は機能面だけでなく、「開発のスピード」にもあります。この記事執筆時点でも、メインブランチへの更新は1日1回程度のペースで行われており、先週には新たなユースケースが追加されました。(メンテナーの方々ありがとうございます!)

既存のオプション機能を有効化してみる

2024年7月9日時点では、GenUの構成図のうち点線で囲まれている部分が、ユーザーが自ら有効化することで使用可能になる機能です。

画像引用元: https://github.com/aws-samples/generative-ai-use-cases-jp

ここでは、セキュリティ設定と先週対応されたKnowledge BaseのRAGチャットを有効化してみます。GenUはCDKで作成されているため、cdk.jsonという設定ファイルを変更することで反映することができます。
※GenUのデプロイには事前にモデルアクセスのリクエストが必要です。

セキュリティ設定

セキュリティ設定では、設定ファイルを少し修正するだけで以下の機能を追加できます。

  • セルフサインアップを無効化
  • サインアップできるメールアドレスのドメインを制限
  • IP アドレスや地理的制限によるサイト閲覧制限
  • SAML 認証

実際の設定は、true/falseの切り替えやドメイン、IPアドレスなどを配列に記載するだけで簡単に行えます。

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

サインアップできるメールアドレスのドメインを制限

IP アドレスによる制限

簡単…!!!!

Knowledge BaseのRAGチャット

こちらも設定ファイルを少し修正するだけで有効化できます。
(デフォルトではAmazon Bedrockに関するPDFがデータソースとしてS3に格納されています)

デプロイ後にAWSマネジメントコンソールにて、作成されたナレッジベースとS3を同期させる操作が必要です。この操作を行わないと、以下のような回答になります。

有効化し同期まで完了すると、Amazon Bedrockについて回答するRAGチャットが使用できるようになります。

余談ですが、実は上で使用しているClaude3.5は非常に賢いので、ナレッジベースを使わなくてもBedrockについて教えてくれます…!
ただ、外部の独自の情報(例:会社固有の知識)を含めたい場合はナレッジベースの使用が必要です。

自分でカスタマイズしてみる

GenUはフロントエンドのコードも含まれているため、画面を変更することも可能です。
ここでは背景色をアイレットのコーポレートカラーに変更してみました。

ただし、カスタマイズすると最新版の取り込み時にコンフリクトが発生する可能性があるので注意が必要です。

GenUを使う際のナレッジ

安く試したいのであれば、一旦Kendra RAGは有効化しない

Kendraを使用したRAGチャットはオプション機能のため、使用する際には有効化する必要があります。ただ実は、Kendraを使用するとコストが跳ね上がります。。
GenUの概算料金内容を見ると、月額合計料金の941.99(USD)のうちAmazon Kendraが821.25(USD)を占めています。為替レートの変動はありますが、Kendraが最も費用がかかることは暫く変わらなそうです。

そのため、コストを抑えて試したい場合は、Amazon KendraのRAG機能を有効化せずに使用するのが賢明です。

有効化していない状態の設定↓

ただKendraを使用するユースケースでもKendraのインデックスを自動で作成・削除するスケジュール設定があるため、稼働時間に対する利用料を削減することは可能です。
Kendraのインデックスを自動で作成・削除するスケジュールを設定する

画面を追加するならReactやTailwind CSSの知識が必要

GenUのフロント画面はReact(+Tailwind CSS)で実装されています。そのため、ページを追加するなどの要望を実現するにはReactの知識が必要になります。

さいごに

GenUを使ってみて、AWS上での生成AI応用がこんなに手軽にできるんだ!と驚きました。RAGチャットなどの機能も、ちょっとした設定で使えるようになるのはすごいですね。

GenUは日々進化しているので、これからどんな機能が追加されるのか楽しみです!

明日のブログリレーは、長谷さんの「もくもく会のロゴをデザインする」です。
もくもく会デザイン担当の長谷さんの記事、必読です。
ぜひ明日のもくもく会ブログリレーもご覧ください!