はじめに
2023 Japan AWS Jr. Championsアドベントカレンダー 記念すべき1日目の投稿です
AlexaやBedrockを活用してAWS最新ニュースキャッチアップができないかと考え、アプリ開発をしてみました!
その時に使用した技術について以下の記事にまとめていきたいと思います。
アプリを作る中で、必要となる知識を適宜盛り込んで解説をしてます。
気になる箇所だけでも見ていただけると嬉しいです!
開発の背景
AWS技術者としてAWSの最新のトレンドを抑えることは一つ重要なことかと思われます。
私自身はAWS最新のブログを読んで情報収集をすることが多いのですが、その中で以下のような悩みを抱えてました。
- AWS最新ブログは当然ながら英語で書かれている
- 内容をうまく理解できず、読んだだけではあまりピンとこないときがある
- 記事を調べる時間でさえ手間に感じてしまうことがある
これらの課題を解決しながら、快適にキャッチアップができないものかと考えてました...
一方でこれまでの自分自身の経験を振り返ると、学生の頃の勉強や新しい仕事に就いた時など、ただ座学形式で資料を読み込むよりも、有識者にレクチャーをしてもらって、さらに質問をすることで理解が深まった経験があります。
ただし、この有識者を見つけることも難しいですし、たとえ見つけたとしても毎回毎回聞きに行くのも気が引けてしまいます。
そこで今回、この有識者の部分をAlexaとBedrockで解決できるのではないかと思い、AWSキャッチアップ用のAlexaアプリを開発することにしました!
動作イメージ
全体アーキテクチャ
サーバレスアーキテクチャであり、大きく分けると以下に示す3つの機能に分かれています。
1. データの収集
AWSブログのRSSを日次で読み込み、最新の情報を取得します。
対象のブログは英語の記事になりますので、Alexaの発話に必要となる見出し(title)と要約(description)をAmazon Translateで日本語訳をしていきます。取得した情報はAmazon DynamoDBへ格納し、TTLを使用して自動削除されるように設定します。
本箇所については以下の記事で別途解説を行っております。
2. 最新情報の提供
ユーザーの発話に合わせて、Alexaのスキルを起動します。
スキルの開発にはSelf HostedのAWS Lambda (python)を使用しており、DynamoDBから最新情報のデータを取得します。
取得されたデータはユーザーへ返されます。
本箇所については以下の記事で別途解説を行っております。
3. 質問
前段で指定した番号の記事について、ユーザーからの質問(自由発話)をAlexaで受け取ります。
受け取った内容はLambdaを介してBedrockへ送信され、回答を取得します。
ユーザーにはBedrockからの回答をそのまま返します。
本箇所については以下の記事で別途解説を行っております。
おわりに
β環境での限定公開ですが、無事動作イメージ通りの動作をするアプリを作成することができました
今回はAWSのブログを対象としましたが、RSSに対応をしていればどの記事でも問題がないので、ご自身のご興味に合わせて選択いただければと思います。
今後の課題としては
- Lambda - Bedrockでのレイテンシが大きいので、文字数制限や時間制限を設けることで対応
- ユーザーにとって使い勝手が良くなるようにAlexaインテントの整備
- 公開に向けてセッション管理等、適切なコードに修正
を対応していきたいと思います。