🤖

AWS Japan 生成AIハッカソン決勝進出作品紹介 - 電話×生成AIで実現する継続的成長支援システム「GenMuck」

2024/12/01に公開

はじめに

2024年10月31日のAWS AI Dayの中で "AWS Japan 生成AIハッカソン 決勝戦"が行われました。生成AIハッカソンでは、Amazon Bedrockを活用して社員の仕事をより楽しく効率的にするアプリケーションの開発が競われました。
本記事では、参加チーム「GenMuck」が開発した継続的成長支援システムGenMuckについて、特にアーキテクチャと実装の観点から詳しく解説します。

優勝, 準優勝チームとネットワーキングできるイベントがAWS目黒オフィスにて、12/17(火) 18:30~21:00に開催されるので、興味のある方は参加登録してみてください。
AWS公式: AWS Japan 生成AI ハッカソン Developer Meetup - 入賞作品徹底解説

アーキテクチャ概要

GenMuckは「電話 × 生成AI × AWSクイズ」という3つの要素を組み合わせた独自のアプローチで、ユーザーの継続的な成長をサポートするシステムです。
GenMuckのインフラストラクチャはIaC(Amplify Gen2, Terraform)で管理されております。

GenMuckアーキテクチャ図

主な特徴

  • 事前設定した時間に電話をかけてくる定期的なリマインド機能
  • 生成AIを活用したインタラクティブな会話機能
  • AWS公式情報をソースとした自動生成クイズシステム

実装解説

GenMuckのシステムは大きく分けて3つの主要コンポーネントで構成されています。

  1. AI電話
  2. Web
  3. バックエンド

それぞれのコンポーネントについて詳細に解説していきます。

1. AI電話

AI電話機能はGenMuckのコア機能です。Amazon Connectを利用してユーザーと電話を通じてコミュニケーションします。

使用サービスと役割(AI電話)

  • Amazon Connect: 電話システムの基盤
  • Amazon EventBridge Scheduler: 定期架電スケジュール管理
  • Amazon Bedrock: ユーザからの質問回答生成
  • Amazon Kinesis Video Streams: 通話音声ストリーミング
  • Amazon Transcribe: 音声文字起こし(SpeechToText)
  • AWS Lambda: クイズ返却, 質問回答生成

主要機能(AI電話)

  1. 定期スケジュール架電
    AWSクイズ出題, GenAIによる質問回答
  2. ユーザーからの受電
    AWSクイズ出題, GenAIによる質問回答

2. Web

Webはユーザがアカウント登録を行ったりするUI/UXを提供します。

使用サービスと役割(Web)

  • AWS Amplify Gen2: フロントエンド/バックエンド基盤
  • Amazon Cognito: 認証/認可
  • Amazon DynamoDB: データストア(AWSクイズ, 最新アップデート)

主要機能(Web)

  1. ユーザー管理・認証
    オンボーディングやアカウント情報管理

  2. User Settings
    GenMuckからの電話スケジュール設定
    UserSettings

  3. AWS Quiz
    常に最新のQuizを自動配信
    AwsQuiz

  4. AWS Updates
    常に最新のUpdatesを自動配信
    AwsUpdates

  5. Best Boss(AIチャット)
    全ての悩みを答えてくれるAIチャット!!
    BestBoss

3. バックエンド

バックエンドはユーザへ出題するAWSクイズの生成/格納を行います。

使用サービスと役割(バックエンド)

  • Amazon EventBridge Scheduler: スケジュール実行
  • AWS Lambda: クイズ生成
  • Amazon Bedrock: クイズ生成(文字)
  • Amazon Polly: クイズ音声生成
  • Amazon S3: クイズ保存

主要機能(バックエンド)

  1. AWS公式RSSフィードから最新Updates情報を取得&格納
  2. 生成AIを利用してクイズ(文字, 音声)を自動生成

実装の中で躓いたポイントと解決策

  1. Amazon Connectから日本の携帯電話に発信できない問題
    AWSサポートにて緩和申請を行い解決(迷惑電話などが増えているのか、10営業日ほどリードタイムが必要だった)

  2. Amazon SNSからSMSを送信できない問題
    AWSサポートにて緩和申請を行い解決。

  3. Amazon EventBridge Scheduler経由のスケジュール実装大変問題
    生成AI Code EditorのCursorを使い解決。
    曜日✖️ユーザーの数だけスケジュール登録するが、SchedulerのデフォルトQuotaが10,000,000なのでユーザーが140万人程度なら耐えられる...!!

AWSのサービスで改善が必要と感じたポイント

  1. Amazon Connect, Amazon Lex, Amazon Bedrock統合(QnAIntent)が日本語未対応
    日本語対応していれば、Lambdaでゴリゴリ開発不要になりそう。

  2. Amazon Transcribeの音声文字起こしが数秒かかる
    そのままです... OpenAIのWhisperは爆速らしいです

今回の開発で素敵だなーと思ったポイント

  1. Amazon ConnectのフローGUI ヨシ!
    初めてAmazon Connectを利用したが、直感的にフロー作成できた。
    AmazonConnect

  2. AIコードエディタ(Cursor) ヨシ!
    VS Codeをフォークしており、開発体験が抜群に良い。
    Cursor

  3. Amplify Gen2の開発者体験 ヨシ!
    npm ampx sandboxコマンドでAWS上にサンドボックス環境を自動で構築してくれる。また、ファイル変更を検知すると、自動で再デプロイを実施してくれる。
    AmplifyGen2

GenMuck今後の展望

  • Git公開
    短期間で作成したため、公開するにはコード修正必要...
    Issue/Pull Requestを通じてユーザーとの交流機会 & 手を動かす機会の創出

  • クイズ拡充
    ユーザーの要望に沿う形で、クイズ拡充(英語など..)

  • ゲーミング要素追加
    クイズ正解率, 連続利用日などをランキング化し、ユーザ間での競い合い要素を増加

  • ユーザー分析 & パーソナライズ
    ユーザーに寄り添うことで親近感をあげ、継続的な学習をサポート (めざせ青い猫型ロボット)

ハッカソンへ出場した感想

決勝戦には12チームが出場したのですが、全てのチームのレベルが高くて驚きました。
私自身、ハッカソンには初めて出場したのですが、次回はチームを組んでワイワイしながら楽しみたいと思いました...(今回は締め切り当日に参加申し込みをしたため、チームメンバーが集まらず、1人参加でした)

2週間程度の開発期間で動くシステムが作れたのはAI Code Editor CrusorAmplify Gen2のおかげです。
この2つがなければ、今回の期間中にシステムを作り上げられなかったです。

上位入賞はできませんでしたが、非常に良い経験, 刺激となりました。

まとめ

GenMuckは、Amazon Bedrockをはじめとする最新のAWSサービスを効果的に組み合わせることで、革新的な学習支援システムを実現しました。電話というアナログな接点と生成AIの最新技術を組み合わせることで、ユーザーの継続的な成長をサポートする新しいアプローチを提案しています。
個人的には電話と生成AIの組み合わせは非常に有効だと感じております。現状の日本では、大衆まで生成AI活用が広がっているとは言えないですが、電話というアナログな仕組みと組み合わせることで、老若男女誰にでも受け入れられる可能性を秘めていると感じています。

今後もGenMuckを密かに成長させていき、そのうちこの記事をお読みになってくださった方まで届くようになれば良いな..と思っております。

本記事を読んでくださった方が少しでもAWSに興味をもっていただけたら幸甚です。

Discussion