6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式会社オーイーシーAdvent Calendar 2024

Day 11

【社内勉強会資料】GenUのすすめ

Last updated at Posted at 2024-11-24

GenUとは

GenU(正式名称:Generative AI Use Cases JP)とは、
Amazon Bedrockを使用した生成AIのWEBアプリケーションをすぐに実装できるよう設計された、AWS公式のオープンソースの生成AIデモアプリです。

  • チャット
  • RAGチャット
  • 文章生成
  • 校正
  • 画像生成
    etc...

上記のような生成AIアプリでよく利用されるユースケースが最初から実装された状態でコードが公開されています。
READMEの手順通りにコマンドを実行するだけで、すぐにこんなリッチなUIの生成AIのWEBアプリが構築できます。

スクリーンショット 2024-11-22 16.12.20.png

GenUに実装されている機能

ユースケース一覧

RAGチャット

社外秘の情報や社内規定など一般に公開されていないドキュメントを参照して回答を生成することができます。
GenUでは所定のフォルダにソースとなるドキュメントを配置し、オプションを有効にすることで簡単にRAGチャットを実装できます。

RAGチャットの有効化の手順

自動車保険に関する資料をソースドキュメントして与えた場合のチャット

image.png

ソースドキュメントを参照して回答を生成しています。
次のファイル形式がサポートされているので、大抵の社内文書はそのままソースドキュメントして与えることができます。複数のファイル形式が混在していても問題ありません。

  • .txt(文字コードはASCIIのみ)
  • .md
  • .html
  • .doc/.docx
  • .csv
  • .xls/.xlsx
  • .pdf

KendraとBedrock Knowledge Bases

RAGチャットをAWSで実装する場合、上記2つのどちらを利用するか選択できます。
性能に大きな差はありませんが、Kendraの方がKnowledge Basesよりも対応しているファイル形式が多い、ドキュメントを格納しておくデータソース(S3など)の対応が多いなどの違いがあり、拡張がしやすいという特徴があります。
ただし料金が1.4 USD/時間 1ヶ月720時間とした場合1,008 USD/月とかなり高額のため、基本的にはKnowledge Basesを利用した方が良いです。

その他の機能

他にWEBアプリの機能として以下の機能が標準で実装されています。

  • ユーザー認証:Cognitoを利用したユーザーのサインアップ・サインイン
  • 利用履歴の保持:利用者の入力、モデルの出力等をデータベースに保持
  • 音声認識:リアルタイム、音声ファイルからの文字起こし

またオプションを有効化することで以下の機能も追加できます。

  • セキュリティ設定:IPアドレス制限、利用できるドメインの制限など
    • Microsoft Entra IDとの連携も可能
  • モニタリングダッシュボード:入出力のトークン数や直近で入力されたプロンプトなどが集計されたダッシュボード

費用感

RAGチャットを実装した場合の月額の料金試算例が以下になります。

image.png

  • ユーザー数:50人
  • 1ヶ月間の入力トークンを11,000,000トークン

→ 1回の入力あたり500トークンとした場合22,000回
→ 1人あたり1ヶ月440回利用

ざっくり上記の条件での試算で月額70,641円の費用になります。
基本的には利用状況と比例する従量課金のサービスが主になるので、利用頻度に応じて変動します。
ChatGPTは中小企業向けのTeamsプランであっても1ユーザー当たり4,500円ほどかかりますが、GenUで構築すれば利用ユーザーが増えても料金が大きく跳ね上がることはありません。

ライセンスについて

GenUのライセンスはMIT-0です。
内容としては以下のようなライセンスです。

  • コードをコピー、変更、再配布してもOK
  • 商用利用も可能
  • 他のプロジェクトに組み込んでも問題なし
  • 著作権表記が不要(通常のMITライセンスでは、元の著作権表記を残す必要がありますが、MIT-0では不要)
  • 提供されるコードの保証はしない(例:「壊れても責任を負いません」)

なので、自社のサービス用にカスタマイズして販売できます。

社内で活用するには?

  • 社内規定や通達への問い合わせ対応の自動化
  • コールセンター業務のQAサポート
  • 社内の技術ナレッジの蓄積、検索

ハンズオン

事前準備

  • Node.jsのインストール
    • npm --versionが実行できること
    • 社内ネットワークから実行する場合プロキシ設定をする
  • AWSアカウントの作成
    • IAMユーザーを作成し、アクセスキーを発行する
  • AWS CLIのインストール
    • aws --versionが実行できること
  • プロファイルの作成
    • こちらを参考にプロファイルを作成

モデルの有効化

Bedrockのモデルを利用するには、利用するリージョンごとにモデルアクセスの有効化を行う必要があります。
GenUはデフォルトでバージニア北部(us-east-1)のモデルを利用するようになっているため、次の手順でモデルアクセスの有効化を行います。

  1. AWSマネジメントコンソールにログインします

  2. リージョンをus-east-1に切り替えます

  3. Amazon Bedrockのサービス画面を開きます

  4. 左側メニューから下の方の「モデルアクセス」をクリックします
    image.png

  5. 「Claude 3 Sonnet」の「リクエスト可能」をクリックし、さらに「モデルアクセスをリクエスト」をクリックします。
    すでに有効化されている場合は「アクセスが付与されました」が表示されます。その場合この手順は不要です。
    image.png

  6. 「Claude 3 Sonnet」にチェックが入っていることを確認し「次へ」をクリックし、次の画面で送信ボタンを押してください
    image.png

これでモデルアクセスの有効化はOKです。

リポジトリのクローン

まずは任意の場所に公式リポジトリをクローンします。

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

クローンしたフォルダに移動します。

cd generative-ai-use-cases-jp

スタック名の変更

今回は複数人で同じAWSアカウントに環境構築をするため、作成するリソースの名前が被らないように以下の箇所を変更します。

ファイル./packages/cdk/bin/generative-ai-use-cases.tsの148行目 'GenerativeAiUseCasesStack'の末尾に社員番号を追加
例: 'GenerativeAiUseCasesStack123'

デプロイ

公式リポジトリのデプロイ手順を実施します。

export AWS_PROFILE=<事前準備で作成したプロファイル名> #デフォルトプロファイルを設定している場合は不要
npm ci
npx -w packages/cdk cdk bootstrap
npm run cdk:deploy
# Do you wish to deploy these changes (y/n)? → yを入力してEnter

実行後コンソールに出力されるURLをブラウザで開きます。

Outputs:
〜省略〜
GenerativeAiUseCasesStack123.WebUrl = <URL>

GenUではデフォルトでユーザ認証機能が実装されているため、アクセスすると以下のサインイン画面が表示されます。

image.png

「アカウントを作る」からアカウントを作成し、サインインしてください。
サインイン後以下の画面が表示されれば構築は完了です。

スクリーンショット 2024-11-22 16.12.20.png

カスタマイズ

OSSで全てのコードが公開されているため、WEBのUI変更や不要な機能の削除など自社サービス用に変更することもできます。
なおGenUはインフラ構築をAWS CDK、フロントエンドのコードはReact.js、バックエンドはNode.jsで書かれているため、カスタマイズするには多少これらの知識が必要になります。

例えばとってもAWS感が出ている画面の色を一部変更してみましょう。
./packages/web/tailwind.config.jsの18行目'aws-smile': '#ff9900','aws-smile': '#CCFCCB',にして、npm run cdk:deployを再度実行してください。

image.png

色変更ができました。

また元から搭載されている音声文字起こしとRAGチャットの機能を組み合わせて「問い合わせを音声で受付、回答をRAGで生成、音声で回答を返す」なんてことも実装できます。

voiceToRagChat.gif

※この動画に音声は入っていません

ソースを自由に変更できるため、ベースは公式リポジトリから持ってきて、自社用にカスタマイズして構築することが可能です。

環境削除

リソースの削除

お試し用で作成した環境はnpm run cdk:destroyを実行して削除しましょう。

おわりに

GenUを利用することで

  • データを自社のAWSアカウント内で保持できる(外部に出さなくていい)
  • 他社のサービスよりも安く利用できる
  • Microsoft Entra IDとの連携により、社員に限ったアクセス制限が可能
  • ソースが公開されておりカスタマイズできるため、細かい権限管理も可能(「〜〜システムのQA機能は〇〇部だけ使えるようにする」など)

などの利点があります。
またお客様から生成AIサービスの構築について引き合いがあった際も、一から作るよりも簡単に構築することができます。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?