第四開発事業部の西田です。

Amazon BedrockがGAされてAWSの生成AIも盛り上がってきましたね。

Generative AI を活用したビジネスユースケースのデモンストレーション. Contribute to aws-samples/generative-ai-use-cases-jp development by creating an account on GitHub.

本記事では、↑こちらに公開されているAWS公式の生成AIユースケースのサンプルを実際にデプロイして試してみました。

デプロイしてみる

YouTube動画にならってCloud9でデプロイしてみました。
注意点としてはREADME.mdに記載があるように、デフォがus-east-1のClaudeを使う前提なので、該当リージョンのBedrockでClaudeを使えるようにしておいたり、Cloud9で使うAWS CLIも該当リージョンを向く様に気をつけましょう(使用リージョンを変えることもできるようですが、東京リージョンはまだBedrockの対応モデルが少ないためデフォルトのままにしました)。

また、動画の様にCloud9のEC2インスタンスのIAMロールか、Cloud9を使うIAMユーザーに必要な権限を割り当てておくことと、npm ciが重くてCloud9がハングするのでインスタンスタイプはt3.small以上にしときましょう。

cdk bootstrapが失敗する場合は、CDKToolkitのCloudFormationスタックを削除してやり直すと成功するかもしれません。

CDKデプロイが完了するまで、私の場合は1時間ほどかかったので気長に待ちましょう。
終わるとCloudFrontディストリビューションのURLが出力されるので、アクセスできれば完了です。

RAGも試したい場合はAmazon Kendraも構成する必要があります。
手順はこちらです。

使ってみる

サインアップ

認証はCognitoが使われていて、利用可能なメールアドレスとパスワードを設定してサインアップします。
メールにワンタイムトークンが届くのでそれも入力してサインアップを完了します。

基本的にこの仕組みは、S3 + CloudFrontで配信するReactで作成されたフロントエンドと、API Gateway + Lambda ↔ DynamoDB、Bedrock、(Kendra)で作成されたバックエンドサービスで構成されているようです。

ホーム

サインイン、サインアップ後はホーム画面に遷移します。

ホームから「デモ」のボタンを押すことでそれぞれの機能にプリセットの問い合わせができます。

チャット

ChatGPTさながらLLMモデルとチャット形式で会話ができます。

本家ChatGPTと比べると若干レスポンスが遅いですが違和感なくインタラクティブに返答が生成されます。
日本語もバッチリ使えますし、フィードバックのボタンもAPIを呼んでいるので機能しているようです(使っていくと生成結果に影響を与えるのかも)。

クリップボードへのコピーもボタンひとつでできて便利です。

RAG チャット

RAG(Retrieval-Augmented Generation)とはLLMが持ってない知識を、対話を通して外部リソースから動的に補填させる手法のことです。

このサンプルでは機械学習を使った検索ソリューションであるAmazon Kendraと連携させてLLMを実現しています。

例えばデフォルトのClaudeでは知らないAmazon Bedrockの情報も

RAGチャットを使用すると、あらかじめKendraに読み取らせておいたAWSのサイトから取得した情報を加味して返答してくれます。

注意点としてKendraはなかなかコストが高いので(Developer Editionで月810 USD)積極的に使わないならデプロイしないようにしましょう。

一度Kendraを構成してもragEnabledfalseにして再デプロイすればKendraなしの状態に戻せます(参考)。

文章生成

要約

校正

翻訳

Kendra 検索

Kendraを直接検索できるデバッグ機能。

会話履歴

ChatGPTさながら会話の履歴が確認できるインターフェースです。

会話の履歴情報はDynamoDBに保存されています。
会話の内容を要約してタイトルをつけてくれます。タイトルを自分で編集することもできます。

感想

これだけでも十分社内用の生成AIチャットツールとして展開できそうなサンプルだと思いました!
UIはReactでできてるので調整も容易そうですし、Kendraをチューニングすれば社内ドキュメントも扱えそうです。

まだ未完成らしくファインチューニングは未対応とのことですが、今後のアップデートがあれば拾えるようリポジトリをウォッチしておこうと思います。