AIが会話するお問い合わせチャットボットを構築するワークショップに参加してみた #AWSreInvent
AIが回答してくれるチャットボットを構築しよう
おのやんです。
re:Invent 2023にて開催されたAI DevSecOps chatbot [REPEAT]のワークショップに参加して、AIが回答するお問い合わせチャットボットを構築しました。
以前に似た内容の構築を行ったことはありましたが、それでも新しい学びや気づきがあリました。今回はこちらの内容を紹介していきたいと思います。
セッション概要
AI DevSecOps chatbot [REPEAT]
Due to lack of time or resources, DevSecOps engineers are not always able to triage quickly enough. What if you had a chatbot customized for your environment’s use case? This could help you find a solution quickly and give you back valuable development hours. More time allows you to rapidly innovate for your business. In this workshop, learn how you can use AI-powered AWS services to create a chatbot that helps engineers solve common challenges like how to securely store your application’s secrets or how to create a new disaster recovery environment. You must bring your laptop to participate.
AI DevSecOpsチャットボット【リピート版】
時間やリソースの不足により、DevSecOpsエンジニアは常に十分に迅速にトリアージできるとは限りません。もし、あなたの環境のユースケースに合わせてカスタマイズされたチャットボットがあったらどうだろう?迅速に解決策を見つけることができ、貴重な開発時間を取り戻すことができます。時間が増えれば、ビジネスのために迅速にイノベーションを起こすことができます。このワークショップでは、AIを搭載したAWSサービスを使ってチャットボットを作成し、アプリケーションの秘密を安全に保存する方法や、新しい災害復旧環境を作成する方法など、エンジニアがよく直面する課題を解決する方法を学びます。参加にはノートパソコンの持参が必要です。
セッション内容
今回のセッション内容は、BedrockとKendraを用いてRAGシステムを作り、それをチャットbotのUIから使用できるようにするというものでした。ワークショップ時に共有された構成図がこちらです。こちらをみても、シンプルなRAGシステムだということがわかります。
そのため、今回はワークショップの構成を以下の2つのセクションに分けて紹介します。
- BedrockとKendraを用いてRAGシステムの構築
- SageMaker StudioでJupyterLabを操作し、PythonのStreamlitで作られたチャットボットUIを起動
BedrockとKendraを用いてRAGシステムの構築
ワークショップの前半では、BedrockとKendraを用いてRAGシステムを構築しました。Kendraに食わせるデータセットは、今回はS3に保存した3つのPDFファイルでした。
Kendraのインデックスの作成は、WebクローラでWebページを食わせると数時間かかったりします。しかし、今回はほんの数秒でインデックスの作成が完了しました。早過ぎてワークショップ中ちょっと笑ってました。
Bedrockのモデルは、Titan Text G1 - Express と Claude Instantを選択しました。
ここで、Bedrockの各モデルにどういった特徴があるのか、詳しく把握できていないなと思いました。Titan Text G1 - Express も Claude Instantも、他のモデルとどう違うのかもうちょっと深ぼっていいかな、と思いました。
SageMaker StudioでJupyterLabを操作し、PythonのStreamlitで作られたチャットボットUIを起動
チャットボットUIの構築には、SageMakerのJupyterLabからStreamlitを起動することで実現していました。UI自体はすでに構築してあるようで、操作の際にはJupyterLab上で実際のGitHubリポジトリをPullしていました。
また、本ワークショップの手順にくわべて、SageMaker Studioのコンソール画面が新しくなっていました。こちらは講師の方のアナウンスがあったのですが、英語がよく聞き取れなかったため直接聞きに行って教えてもらいました。
こちらが、新しいSageMake Studioのコンソール画面です。
そしてこちらが、ワークショップの手順書に記載のあったクラシックなSageMaker Studioコンソール画面です。全然違うものになっていたので、ちょっと混乱しました。
構築したチャットボットの検証
ワークショップの最後には、実際に構築したチャットボットの実際に操作して検証しました。チャットボットは、S3バケットに保存したドキュメントから情報を取得してBedrockに問い合わせ、そのレスポンスをチャットに表示します。
こちらのチャットボットは、言語モデルにTitan Text G1 - Expressを選択した場合の質問・回答です。
日本語で質問してもいい感じに答えてくれていますね。ただ、参考資料のリンクは付与しなかったり、ようやくされていない長文を返してきたりと、回答自体の精度はもうすこしかな、と思いました。
こちらのチャットボットは、言語モデルにClaude Instantを選択した場合の質問・回答です。
日本語の質問には対応していないようですね。
Kendraに弊社クラスメソッドの会社概要ページを食わせてみました。弊社クラスメソッドについて質問したら、別のクラスメソッドについて人間とアシスタントがやり取りし始めました。興味深いですね。
学び・気づき
BedrockとKendraを使ったRAGアプリケーションを使って、チャットボットを公開することができました。以前に同じ構成のアプリを構築したことはあったのですが、今回はS3に保存したPDFをデータソースとして、2つのBedrock基礎モデルを用いました。以前試したものと別の方法で構築し、そこの違いなどを学べたと思います。
一方で、前述した通り、Bedrockの各モデルの特徴などがチャットボットにそのまま出力されます。そのため、それぞれの特徴の違いなどをしっかり押さえておけば、より性能の良いRAGチャットアプリケーションが開発できると感じました。
さいごに
BedrockとKendraを用いたRAG構成を使って、チャットボットアプリを開発しました。
私が先日聴講したセッションでは、「Bedrockを使えば本当に簡単に生成AIアプリケーションが作成できる」と述べられていました。本当にそうだと思います。わずか2時間のワークショップの中で、それなりに動作するRAGが構築できるのは、Bedrockの強みだと思いました。
皆さんも、まずは生成AIアプリケーションを触って、実際にアプリケーションを触ってみましょう。自分が思っていたよりずっと簡単に生成AIアプリを作成できると思います。では!