AWS x 生成AIハッカソンを開催しました
ゆめみでは2024年4月末から6月6日までのおよそ1ヶ月間、AWS生成AIハッカソンを開催しました。本記事ではその様子と成果物についてお伝えします!
開催のきっかけ
昨今、生成AIの活用が模索されてますよね。 ゆめみのエンジニアメンバーも日々研究を重ねており、GItHub Copilot などのアプリケーション開発補助の導入やChatGPTを用いた社員間フィードバック活発化システムなどが作られてきました。
しかしながら、一部の先進的な開発者が生成AIをアプリケーションに組み込むのみで、このような生成AIを組み込んだアプリケーション開発のできる技術者の数は限定的だったり、どんなユースケースで力を発揮するのか事例も少なく、我々のクライアント案件においても生成AI導入も提案できていませんでした。
もう一つ重要な背景として、若手の育成という課題もありました。 ゆめみでは積極的に新卒採用を行なっており、24年度も30名ほどの新卒が入社しました。 全員がOJTというのも良いですが、やはり仮想プロジェクトをベースとしたチーム開発経験は良い訓練の機会というのもあり、ハッカソンにてチーム開発の経験も積んでもらおうと考えました。
以上の背景から、
導入ユースケースを複数並行で検討し
技術者を育成する
ゆめみのエンジニアメンバーの力量を知ってもらう
という一石三鳥を求めてハッカソンを開催するに至りました。
このイベントを記事化をすることで、ゆめみは生成AIアプリケーションも作れるんだぞ!とアピールしてお仕事をもらおうという商魂逞しい狙いもあったりします(笑)
ハッカソンのルール
アプリケーションに含まれている要素として次を求めました。
生成AI技術を利用している
AWSクラウド基盤上で実行可能なアプリケーションが構築されている
AWSであればBedrock, Amazon Q, SageMaker などの生成AI, AI関連サービスが利用されていること
社会に価値を提供できる
例えば具体的な業界について検討されている(例:製造業向け)
社外に公開できる
今回は主にAWSクラウドでの開発力を組織的にものにしようということで、OpenAI系のエンジンは使わないルールにしています。
以上を踏まえ次のような審査基準を設けました。
基本加点基準
AWS上にデプロイされている +5pt
設計ドキュメントが作成されている +5pt
AWS上でのアーキテクチャ図や、システム構成図などのドキュメントが準備されていることを求める
デモが実演できる +5pt
審査員による加点基準
社会にインパクトを与えるものであるか審査員各員持ち点2ptで最大4pt
特に、我々のクライアントとなりうる企業において需要がありそうか
想定する業界が検討されておりそれが妥当か
審査員2名による審査
生成AIの利用が高度であるかどうか審査員各員持ち点2ptで最大4pt
プロンプトを送るだけでなく、RAG, ファインチューニングなど踏み込んだ利用法を評価する
審査員2名による審査
以上の通り、今回のハッカソンはアイデアソンも兼ねたような挑戦的な企画となりました。
出場チーム
社内からは若手を中心に4チームが参加
Yakiniku(3人)
愉快な新卒(4人)
完全プレゼン主義(4人)
侠龍会と愉快な仲間たち(3人)
💡 ゆめみ社内は職能ごとに組織が分かれていて、Yakiniku、侠龍会といったチームが存在します。面白い名前ですねぇ。今回のハッカソンにはその2チームも参加しました。
審査会
審査会では各チーム20分で開発したアプリケーションのアーキテクチャ解説やデモ、ビジネスインパクトの解説が行われました。
公開されたアイデアとアプリケーション(解説付き)
①Naniyomu
読みたい本や過去の曖昧な記憶から本を探すチャットボット
楽しい気分になれる作品を読みたい
これこれこういうテーマがある作品はないか
これに似ている作品が読みたい
このような曖昧なリクエストを汲み取って書籍を検索するサービスで、主に出版業界を想定した作品。
アーキテクチャ
解説
今回はテストデータとして青空文庫のデータを用いています。まず OpenSearch Serverless を用いて書籍データを検索可能にし、書籍本文から Claude 3 Haiku を使用して書籍の属性データを生成してS3に保存。 実行はStep Functionsを使用してLambdaを並列実行。そのあと、S3に保存された「要約/キーワード/レビュー/おすすめ読者」を元に Knowledge baseを作成。これを Agents for Bedrockによる検索ができるように構成したようです。
②Slack 猫
Slack上での発言に対して、その話題に詳しい人などへメンションしつつ、会話のパスをしてくれる人間関係取り持ちBotです。
例えば「ボードゲームがしたい」と言えば、
😘 ボードゲームしたいなあ。でも一人じゃできないしな〜〜
😺 @S さんがボードゲーム好きにゃ! @S さんの最近遊んだボドゲは何にゃ?
といったようにSlack上でメンションして人を巻き込んで会話のアシストをしてくれる。 他にも特定技術の話題。例えばPHPのここがわからないといえばPHPに強い人を連れてきたりしてくれる。このように、社内で顔の広い親切な人をAIによって作り出すことができる。
アーキテクチャ
解説
まずユーザーがslackに投稿
ECS にイベントが post され、ECS で処理がなされたのちに Lambda が発火、Bedrock が走る
Bedrock は S3 のナレッジベースを使用した RAG が構成されており、回答を生成し、同じルートを通ってSlackに返信
S3 には話題と関連する人の情報が格納されている
S3 と Bedrock は StepFunctions を用いて定期的に同期
③素人質問で恐縮ですが。。。
発表原稿とペルソナ(=持っている知識のレベル度合いに合わせた個性)に応じた想定質問を考えるアプリケーション。ペルソナ例 AWS や LLM に対してプロフェッショナルな人、数学に対して初心者などいくつか設定可能。インプットするデータはテキストだけで吐き出す、録音したものを文字起こし、それを入力とすることもできる。学会発表の想定質問を考える際や国会答弁等の政治活動における事前質問を考えるサポートができる。
アーキテクチャ
解説
テキストのインプットは Fargate を通じて Amazon Bedrock Claude 3 Haiku に入力され、同様の経路でレスポンスが返却される
文字起こし時は Amazon Transcribe を使用し、文字起こしデータは S3 へ格納される
想定質問を考えてもらうためのプロンプトは以下のようなものを使用。
次のような YAML 形式でレビュー及び想定質問を提案してください。
questions:
- クラウドのプロフェッショナルから考えられる150字程度の質問
- 数学者から考えられる150字程度の質問
review:
- 発表原稿に対する 200 字程度のレビュー
出力はレスポンス生成で使いやすいよう、YAML形式で出力する指示もしている。
④CYMATIC SCAN
従業員の精神負荷を測定する Slack アプリケーション。SlackBot を呼び出した人の直近のSlackメッセージを読み取り、ストレスチェックを行なってくれる。
アーキテクチャ
解説
アプリケーションはサーバーレス構成となっており、API Gateway + Lambda 経由で Bedrock, Kendra が呼び出される
KendraによってSlackが容易に接続できることを活かした
Kendra を用いることで Slack 接続、検索性、データ定期更新、複数データソース利用を実現
Bedrock + (Kendra + Slack) の RAG が構成されており、基盤モデルは RAG に特化した Cohere Command R を利用
結果発表
優勝を勝ち取ったのは、愉快な新卒チームによる「Slack猫」でした!
審査員コメント
💡 まずはプレゼンが秀逸でした。 例えばゆめみのように成長し社員数が増えてくるような状況で不特定多数の社員間を取り持つマッチングツールは重要になってくると考えられます。他にも閉じた村のような場所でも村と村の間を取り持つような利用価値が出てくるでしょう。
優勝チームのコメント
💡 もう最高ですね! 予想通りの点数です(ドヤ顔)!
プレゼンの段階から自信満々だったのに加えこのビッグマウス。そして優勝を勝ち取るとは恐れ入ります。
生成AIアプリ開発の相談について
ゆめみでは生成AIを活用したアプリケーション開発の相談を承っております。今回の事例のような開発を検討されているようあればお気軽にお問い合わせください!
弊社による生成AI活用事例もご覧ください😆
Special Thanks
社内より審査員を務めてくれた3人のメンバー。そして、審査員を快くお引き受けいただいたAWSさまにこの場を借りて感謝申し上げます!