はじめに
こんにちは! AITCの村本です。私は2024年5月に電通総研へキャリア入社し、Know NarratorなどのAIソリューションを開発しているAIソリューショングループにジョインしました。
Know Narratorは、Azure OpenAI Serviceを活用したソリューションになります。私は前職で主にAWS上でのMLアプリ開発やデータ基盤構築に携わっており、Azureはほぼ触ったことがありませんでした。
そんな私がAzureのスキルアップのために、AITCメンバーのサポートを受けながら「Microsoft x dentsu GenAI Hackathon」というハッカソンに参加しました。入社1ヶ月かつAzure初心者という観点で、参加レポートをまとめます。
Microsoft x dentsu GenAI Hackathonとは
「Microsoft x dentsu GenAI Hackathon」は日本マイクロソフト株式会社と電通グループが共同で開催する生成AIハッカソンになります。全体的な流れとしては、まず1週間、ラーニングセッションなどを通じて様々なAzureサービスを学び、その後の3日間で生成AIを活用した仕組みを作る、という流れです。
1週間の学習期間ではラーニングセッションのほかにオンラインの学習コンテンツも提供されていました。
- ラーニングセッション:1時間×2コマ×5日で様々なAI活用のためのAzureサービスについて学習
- オンライン学習コンテンツ:自分のペースで進められる学習コンテンツ
ラーニングセッションでは、Azure上のAIに関連するサービスを網羅的に学ぶことができます。直近開催されたMS Buildの情報も含まれており、非常に充実した内容でした。オンライン学習コンテンツではAZ-900に対応した入門者向けの内容から、開発者向けの実戦的なコンテンツもありました。
3日間のハッカソン
今回のハッカソンには、私含めAITCから2名、他部署から3名の計5名のチームで挑戦しました。3日間のスケジュールは以下のような流れです。
1日目:アイデア出しからデータの用意まで
3日間のハッカソンで作成するものについては「なんでもよし」とされていたこともあり、アイデア出しからスタートです。いくつか出た案の中で、最終的に「開発ドキュメントの矛盾を見つける仕組み」を作ることになりました。
開発ドキュメントを作成していく中で、昔作ったドキュメントとの矛盾が起きることはよくあると思います。「旧バージョンでは制限されていたことが、新バージョンではOKになっているのにドキュメントはそのまま...」、「新しくドキュメントを追加したが、実は関連ドキュメントが既に存在していて内容も矛盾している...」このような経験ありますよね?
AITCではConfluenceを利用しており、ハッカソン用にConfluence上でドキュメントを用意しました。ここで、新しいドキュメントを作成した際に、既存のドキュメントと矛盾がないかチェックする仕組みを作ります。デモアプリのインプットとアウトプットは次のように定義しました。
2日目:Azureの各種サービス構築と連携
テーマとデータが用意できたので開発に取り掛かります。ここで問題なのが「Azure上のどのサービスをどのように連携させると、上記入出力が実現できるか」になります。ラーニングセッションで学習していたとはいえ、Azure初心者の私には時間がかかるところです。
この部分に関して、同じくAITCから参加していた方に助けていただきました。すでにKnow Narratorの開発などで経験を積んでおり、Azureや生成AIに対する知見があるため、目指したい形を実現するための構成図を素早く用意していただくことができました。いわゆるRAGの仕組みを作るわけですが、以下の構成図に基づき構築を進めます。
Confluenceのドキュメントデータをhtmlに変換してblobに配置したり、Azure AI Search等の各種リソースの用意を進めました。
Azure AI Searchの構築自体はAITCメンバーが作成した資料を参考にしつつ、直接アドバイスをうけながら進めました。
参考にした資料tech.dentsusoken.com
Azure AI Searchで検索できるようになった後は、Azure OpenAI Studioのチャット プレイグラウンドを利用して、矛盾を見つけるためのシステムプロンプト等の検証を進めます。ここでは最近GAされたばかりのGPT-4oを利用しました。チャットのデータソースにAzure AI Searchを指定することで、ドキュメントの内容を踏まえた回答が返ってくるようになります。
3日目:矛盾検索デモアプリ作成
Azure上で必要なリソースの準備が完了したので、デモアプリの作成を目指します。今回はStreamlitというPythonフレームワークを使って、簡易的なWebアプリを作成しました。Azure OpenAIやAzure AI Searchとの連携、LLM周りの実装にはLangChainも利用しています。
今回のデモでは、既存ドキュメント内に「Windowsの場合はWSL、macOSの場合はネイティブ環境を使って開発に使います」という内容があります。この状態で新規ドキュメントとして「macの開発は禁止です」という表現を入れておきます。この矛盾を発見できるかを確かめます。
実際に作成したデモアプリの画面が以下になります。
新規ドキュメントを入力し、チェックを走らせると...
狙ったところの矛盾を指摘してくれました。矛盾点の比較と矛盾の可能性を、テーブル形式で表示するようにシステムプロンプトを用意しています。
参加して感じたこと
Azureはほぼ初心者に近い状態でハッカソンに参加することになったので不安はありました。実際、プログラムの実装やAzureサービスの構築でたびたび詰まってしまいましたが、ハッカソン参加メンバーやAITC内に経験豊富な方が多く、アドバイスをうけながら進めることができました。また、ハッカソン自体のラーニングセッションやサポート体制がしっかりしており、スムーズに開発に入れたのもよかったです。
入社してまだ1ヶ月ではありますが、チームの方と協力しながらデモアプリの作成まで経験できたのは非常に良い経験になりました。短期間だったこともあり、今回はシンプルにRAGを作った形になりました。Confluenceのドキュメントも一度blobに配置しないといけない問題点もあります。シームレスな連携ができるようになれば、本当に使えるものになるのではと考えます。
最後に
本記事では「Microsoft x dentsu GenAI Hackathon」に参加したレポートをまとめました。
AITCでは共に働いてくださるメンバーを募集しています。キャリアで入社してきてすぐの私でも、今回のような活動に参加できる機会や環境、サポート体制があります。本記事を読んで、AITCの活動に興味を持っていただけますと幸いです。
下記のページにAITCでの働き方や募集職種、組織などの採用に関わる情報をまとめています。 カジュアル面談の応募フォームもこちらのページにリンクがありますのでぜひご覧ください。
執筆
AIソリューショングループ
村本 直樹