1
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?

AWS Community BuildersAdvent Calendar 2024

Day 24

Amazon LexとAmazon Bedrockを使ってノーコードでチャットボットを作成するハンズオン

Posted at

とあるイベントでAWSやシステム開発初心者向けに生成AIを使ったハンズオンを実施したので、その内容をブログとして残します。
(本当はQiita Advent CalendarのAWS Community Builders24日目のブログ予定でしたが大分遅くなりすみません。)

概要

Amazon LexとAmazon Bedrockを使ってノーコードでチャットボットを作成します。
AWS初学者や未経験者にAWSコンソールの操作に慣れてもらう。AWSでもノーコードでモノを作れることを知ってもらうのが目的です。
データソースは何でもよいのですが、今回はAWS認定の試験ガイドを使うので「AWS認定QAチャットボット」ができあがります。

アーキテクチャ図

ハンズオンで作るチャットボットの構成はこちらになります。Chat UIの部分はハンズオン対象外です。
bedrock_handson.drawio.png

Amazon Lexにリクエストされたチャットの回答を作成するために、Amazon Bedrockのナレッジベースのデータを検索して回答文章を作成してUserに返す流れになります。

特徴

チャットボットをノーコードで作るために今回AWS各サービスの下記機能を採用しています。

  • Amazon LexのQnAIntent
    Amazon LexからAmazon Bedrockのナレッジベースなどのナレッジストアへノーコードで接続してRAGを行えるようにする機能です。現時点ではナレッジストアとしてBedrockのナレッジベース、Amazon OpenSearch Service、Amazon Kendraが使えます。英語のボットしか今のところ対応していないのに注意です。
    AMAZON.QnAIntent

  • Amazon Bedrockのナレッジベース
    RAGを簡単に構築できるAmazon Bedrockの機能です。今回のハンズオンではデータソースにS3、ナレッジストアにAmazon OpenSearchを使っています。
    Amazon Bedrock のナレッジベース

手順

データ準備、ナレッジベースの作成、ボットの作成の3手順でチャットボットを作成しています。
初めて触る人にでも作成できるように画像を多めにしていますが、執筆時点の画面になるため実際の画面とは差異がある可能性があります。

データ準備

1.データのダウンロード
まずナレッジベースのインプットになるデータの準備を行います。
こちらから適当なAWS認定の試験ガイドをダウンロードしてください。
AWS認定

以降の手順では下記2つのガイドを使っています。
AWS認定パス
AWS Certified AI Practitioner (AIF-C01) 試験ガイド

2.S3バケットの作成
それではAWSで作業を進めます。コンソールからご自身のAWSアカウントにログインしてS3にアクセスしてください。

「バケットの作成」をクリックします。
s31.png

「バケット名」に名前を入力して、「バケットを作成」をクリックしましょう。
s3_2.png

バケットが作成できたことを確認します。
s3_3.png

3.データのアップロード
「1.データのダウンロード」でダウンロードした試験ガイドをS3にアップロードします。

「アップロード」をクリックします。
s3_4.png

指定の範囲にファイルをドラッグ&ドロップをするか、「ファイルを追加」をクリックします。
s3_5.png

アップロードするファイルを確認できたら「アップロード」をクリックします。
s3_6.png

これでデータの準備を完了です。

ナレッジベースの作成

Amazon Bedrockでナレッジベースを作成していきます。
コンソールでAmazon Bedrockにアクセスします。

4.モデルの有効化
まずハンズオンで使うモデルを有効化します。画像ではすでに有効化済みのモデルもありますが、ご自身の環境に合わせて当手順を実施してください。

メニューリストの下方にある「モデルアクセス」をクリックします。
bedrock_1.png

「モデルアクセスを変更」をクリックします。赤枠で囲んでいるのが今回有効化するモデルです。既に有効であれば当手順は飛ばして、次のナレッジベースの作成に進んでください。
bedrock_2.png

有効化するモデルにチェックを付けます。有効化済みのモデルはあらかじめチェックが付いています。
bedrock_3.png
確認画面でチェックしたモデルが表示されていることを確認したら「送信」をクリックします。
bedrock_4.png

モデルのステータスが「アクセスが付与されました」に変わっていることを確認します。
もし、ここでエラーなどで有効化されない場合は再度試していただくか、サポートに問い合わせたほうがよろしいと思います。
bedrock_5.png

5.ナレッジベースの作成
ナレッジベースを作成していきます。Amazon Bedrockのメニューリストにある「ナレッジベース」をクリックします。真ん中あたりにあります。
bedrock_6.png

画面真ん中右端あたりにある「ナレッジベースを作成」をクリックします。
bedrock_7.png
クリックするとリストが表れますが「Knowledge Base with vector store」をクリックします。
bedrock_8.png

ナレッジベースの設定画面です。ナレッジベース名がデフォルトで入力されていますが、必要に応じて変更してください。IAM許可はデフォルトで大丈夫です。
bedrock_9.png

データソースはAmazon S3を選んで、「次へ」をクリックします。
bedrock_10.png

データソースの設定で場所は「このAWSアカウント」をクリックして、「S3を参照」をクリックします。
bedrock_11.png

バケットは「2.S3バケットの作成」で作成したバケットを選択します。
bedrock_12.png

選択したら「選択」をクリック。
bedrock_13.png

S3のURIに選択したバケットのURIが表示されていたら「次へ」をクリック。
bedrock_14.png

埋め込みモデルの選択です。データを埋め込みに変換するときのモデルを選びます。このハンズオンでは「Titan Embeddings G1 - Text v1.2」を選択してください。ベクトルデータベースはデフォルトのままにして、「次へ」をクリックします。
bedrock_15.png

確認画面で選択した項目を確認して「ナレッジベースを作成」をクリックします。
ナレッジベースの作成が始まりますが、完成までに少し時間がかかります。
bedrock_16.png

ナレッジベースが完成すると、ナレッジベースの画面が自動で表示されます。
bedrock_17.png

6.データの同期
表示されたナレッジベースの画面でデータソース欄に表示されているデータソースにチェックを付けます。
「同期」が活性化するのでクリックします。
少し待ってもらうと、同期が完了します。
bedrock_18.png

7.テスト
それではナレッジベースが使えるかテストします。
画面右にチャットに似たテスト機能があるので「モデルを選択」をクリックします。
bedrock_19.png

モデルは「Anthropic」→「Claude 3 Haiku」を選びます。
bedrock_20.png

それではテスト機能の下部にあるテキストボックスに何か入れて実行してみましょう。
結果が返ってくるのを確認してください。
bedrock_21.png

ボットの作成

Amazon Lexを使ってナレッジベースと連携するチャットボットを作っていきます。

7.botの作成
Amazon Lexのコンソールにアクセスしたら「Create Bot」をクリックします。
lex_1.png

botの設定画面に入ります。
Creation methodは「Create a blank bot」をクリックします。
Bot configrationは「Bot name」に自由に名前を入力してください。
IAM permissionsでは「Create~」をクリックします。
lex_2.png

下にスクロールして「Children's ~」は「No」を選択します。「Next」をクリックします。
lex_3.png

言語を設定する画面ではデフォルトの「English(US)」のままにして、「Done」をクリックします。
lex_4.png

Bot完成後、Intent画面が表示されますが何も設定せず「< Back to ~」のリンクをクリックしてください。
lex_5.png

クリック時に未保存で離れてもよいか?と質問されますが「Leave」をクリックしてください。
lex_6.png

8.Intentの作成
Botに具体的に何をしてもらうか設定するIntentの作成をしていきます。

「Add Intent」をクリックします。
lex_7.png

リストが表示されるので「Use built-in intent」をクリックします。*こちらを誤ると次の設定ができません。
lex_8.png

Intenの設定画面が表示されるのでUse built-in intentのリストから「AMAZON.QnAIntent」を選択します。
特徴で紹介したAmazon LexのQnAIntent機能はこちらになります。
lex_9.png

Intent nameを入力したら、「Add」をクリックしてください。
lex_10.png

QnAの設定になります。モデルは「Antropic」「Claude3 Haiku」を選択します。
ナレッジストアは「Knowledge base for Amazon bedrock」を選択します。
「Knowledge base for Amazon Bedrock id」に入れる値は次の画像を参照してください。
lex_11.png
*「Knowledge base for Amazon Bedrock id」項目に入力する値は、Amazon Bedrockナレッジベースのコンソール画面のナレッジベースIDになります。

lex_12.png

ここではサンプルのチャット文をなんでもよいので入力してください。
*最低1つないとビルドに失敗します。
lex_13.png

設定が終わったら「Save Intent」をクリックして保存します。
lex_14.png

「Build」をクリックしてビルドを開始します。ビルドが終わるまで少し待ってください。
lex_15.png

9.テスト
それではチャットボットのテストをしましょう。
「Build」の隣にある「Test」をクリックします。
lex_16.png

テスト用のチャット画面が表示されるので質問を入れて送ってみてください。
*質問内容はAWS認定のデータソースを使っているので、AWS認定に関する質問にしてください。無関係だと失敗する可能性があります。
lex_17.png

後片付け(リソースの削除)

チャットボット作成が終わりました。
作ったリソースを残しておくと課金がかかりますので使わないのであれば削除しましょう。

10.Amazon Lexのbotの削除
Amazon Lexは作成したbotを選択して、「Action」→「delete」と選択してください。
delete_1.png

11.Amazon OpenSearchのコレクションの削除
ナレッジベース作成時、OpenSearchに作成されたコレクションを削除します。

もしナレッジベースが他にも複数ある場合、削除するコレクションをまず確認します。
削除するAmazon BedrockナレッジベースにあるコレクションARMを確認、またはコピーしてメモしておいてください。
delete_2.png
OpenSearchのコレクションにあるコレクションARMから先ほど確認したナレッジベースのコレクションARMと同じコレクションを探します。見つけたら「Delete collection」をクリックして削除してください。
delete_3.png

12.Amazon Bedrockナレッジベースの削除
最後にナレッジベースを削除します。

削除するナレッジベースの「編集」をクリックします。
delete_4.png

編集画面が表示されるので「詳細設定 - オプション」をクリックして、追加表示される「データ削除ポリシー」を確認します。
delete_5.png

「削除」だったら「保持」をクリックしてください。そして「送信」をクリックして設定を保存します。
delete_6.png

「削除」をクリックして、ナレッジベースが削除されるのを待ちます。
delete_7.png

後片付けが終わりハンズオンは以上になります!お疲れ様でした!

最後に

ハンズオンを一通りやってくださりありがとうございました。
Amazon LexとAmazon Bedrockを使えばコードを書かずに一旦チャットボットを作成できることを実感できたかと思います。
今回対象外でしたChat UIも用意してもらえればインターネットに公開することも可能です。
この体験をもとに生成AIで何が作れるか創造するネタになってもらえたら嬉しいです。

ありがとうございました。

1
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
1
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?