【Amazon Connect】Bedrock+Lex+LambdaでAIチャットボットを構築する

今回はAmazon Connect+Bedrock+Lex+LambdaでAIチャットボットを作成します。
LLM(大規模言語モデル)としてBedrockのAnthropic社Claude Instantを使うことによって、
AWSのサービスで完結する構成にすることができました。

こんにちは、エンジニアのyokomachiです。

本記事はAmazon Connect アドベントカレンダー 2023、24日目の記事です。

ギークフィードとクラスメソッドさん、スカイアーチHRソリューションズさんのメンバーによるAmazon Connectに関するアドベントカレンダーです。

ぜひ他の記事もチェックしてみてください。

 

 

今回は何番煎じかわかりませんがAmazon Connect+Bedrock+Lex+LambdaでAIチャットボットを作成します。

以前にもChatGPTのAPIと連携したチャットボットの作成をしましたが、

今回はLLM(大規模言語モデル)としてBedrockのAnthropic社Claude Instantを使うことによって、

AWSのサービスで完結する構成にすることができました。

 

Bedrock

まずはAmazon BedrockでLLMにアクセスできるように設定します。

Bedrockは米国東部 (バージニア北部)リージョン、米国西部 (オレゴン)リージョンでは様々なモデルにアクセスすることができますが、

2023/12/23現在、アジアパシフィック (東京)リージョンでは以下のモデルにしかアクセスできません。

今回はClaude Instantが使えればよいので東京リージョンでモデルへのアクセスをリクエストしました。

※今回の構築は数日前に行ったのですが、その時にはClaudeは公開されていなかったと記憶しています。

つい最近使えるようになったようです。この調子だと他のモデルもどんどん追加されていきそうです。

 

Lambda

次にLexから呼び出され、Bedrock APIに対してリクエストを送るLambdaを作成します。

ランタイムはPython 3.12です。

LambdaのIAMRoleにはBedrockへのアクセスポリシーを追加しておきます。

タイムアウトは30秒に変更しましたが、Claude Instant自体は10秒以内には返答を返してくれています。

Lex

次に作成したLambdaとAmazon Connectを仲介するLexボットを作成します。

スロットタイプにはAMAZON/FreeFormInputを指定しました。

 

忘れずにLambdaの設定もしておきます。

 

Amazon Connect

最後にAmazon Connectでコンタクトフローを作成します。

諸々の初期設定のあと、Lexの呼び出しを行うための顧客の入力取得ブロックを置いています。

 

チャットしてみる

必要な構築が終わったので、Amazon Connectのチャットテストでチャットをしてみます。

 

ちゃんと連携できていそうです。

もちろん電話への対応も可能ですが、Lambdaの実行時間などの制約もあるのでチャットの方が使いやすいですね。

 

また、今回の構築には含まれていませんが、DynamoDBと連携することで会話履歴を保存して、自然な会話を継続することができそうです。またその際には、モデルへのアクセスにLangChainというフレームワークを使うと実装もよりしやすくなりそうです。

https://python.langchain.com/docs/integrations/llms/bedrock

 

さらに、今回BedrockというAWSマネージドのサービスとしてLLMにアクセスできるようになったことで、他のAWSサービスとの連携もしやすくなったのではないかと思います。

特にAmazon Connectにおける活用法としては、Kendraと連携して顧客向けのQ&Aページを事前にインポートしておいて、顧客からの問い合わせに対してQ&Aをもとに回答を行う、などのユースケースが考えられます。

機会があればこのユースケースの構築も試してみたいと思います。

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ