🤖

LINE + Postman + Bedrock + TiDB (Vector) ハンズオン振り返り

に公開

先週 JAWS-UG名古屋で実施した Lineで応答するAIチャットボットのハンズオンの振り返りです。
ハンズオンで実施した内容を振り返り、内容の理解を深める一助になれば幸いです。

全体の構成

こんな感じです。

UIとしてLINEを利用して、LINEメッセージとして質問を投げるとTiDBのVector Storeに保存された知識をベースにBedrock(Nova)が答えを返すというものです。

ハンズオンの流れを振り返ってみましょう。

Bedrockの有効化

下記の篠田さんの手順に沿って、Bedrockの有効化とAWS Novaなどのモデルの有効化リクエストを行います。AWSのモデルは即時に有効化されるのがいいですね。

https://zenn.dev/yukkie1114/articles/b79438fb9b3072

EC2上でのDify環境の構築

久々にEC2を触ったので時間がかかった方も多かった部分です。最近はEC2を起動する際にセキュリティグループの指定もまとめてできるので、「SSHとHTTPの通信を許可する」にチェックをいれておけば問題はありません。SSHクライアントもWebコンソールから接続してしまえば楽ちんですね。

ハンズオンで実施した手順はこちらの亀田さんのblogにあります。
https://zenn.dev/kameoncloud/articles/f7b89792c95c36

また、CloudFormationが利用できる方は、拙作のCloudFormationもあります。
https://zenn.dev/bohnen/articles/e75fd9eb9276bc

お好きな方をご利用ください。

DifyのナレッジとしてTiDB Cloud Serverlessを利用

こちらの記事の手順になります。

https://zenn.dev/bohnen/articles/daf5fa3d597ba1

実際に作成するナレッジはこのような流れになっています。サンプルのmarkdownだけではなく、ご自身でpdfを読み込ませていたりする例もあり良かったなと思います。

ここまでで、与えられたドキュメントに沿った回答を返すチャットボットをDify上で動かせました。

DifyのチャットやワークフローをAPIとして公開

DifyにはAPI公開機能もあり、定義したチャットやワークフローをAPI経由で利用できます。
ハンズオンではPostmanを利用して、このAPIを叩いてみました。

https://qiita.com/yokawasa/items/138f2a6ecbff1f7718da

postmanはcurlの実行例からAPI定義を作れる機能があり、Difyのドキュメントに記載のcurl実行例からすぐ繰り返し利用できるAPI呼び出しテンプレートが作れるのが秀逸です。

LINEからPostman Flowsを経由してチャットを呼び出す

まず、LINE Developersのセットアップ等が必要なので、初めてLINE Developersを利用する方はこちらの記事のオウム返しbotから作成します。

https://zenn.dev/line_dc/articles/postman-flows-linebot

LINEのMessaging APIを利用するために、LINE DevelopersとLINE Official Account Managerの2つのコンソールを利用しないといけないのがちょっと混乱しますね。

LINE Messaging APIを有効化してWebhook URLを設定するまでのインタラクティブデモを作りましたので参照してください。

https://pingcap-japan.storylane.io/share/vfqsobzcrdyp

ここで作成したPostman Flowsで実行していることは、Webhookに渡されたメッセージをそのままLINEのMessaging APIの呼び出しに使うことで、オウム返しを実現しています。このときに、LINEメッセージに返信するために、replyTokenをAPIに渡しています。

オウム返しを確認したら、Difyの呼び出しに移ります。手順はこちらの記事になります。

https://zenn.dev/line_dc/articles/postman-flows-linebot-dify

Postman Flowsの全体像は次のようになります。

完成!

すべてのハンズオンが完了すると、次のように質問に対してDifyにセットしたナレッジから回答を返すLINEボットが完成します。

いかがでしたでしょうか。復習がてら再度構築してみるのも面白いと思います。

Discussion