見出し画像

【技術ブログ】Google Cloud生成AI Innovation Awards最優秀賞受賞!MR(医薬情報担当者)と医師の面談を再現するAIプロトタイプの開発で目指す、医薬品情報提供の質の向上

こんにちは、中外製薬のデジタル戦略推進部データサイエンスグループの田村崇(写真左から6番目)です。この度、中外製薬の内製開発チーム「tech工房」の活動の一環としてデータサイエンティストとITエンジニアでMVP(Minimum Viable Product)開発したアプリ「CHUGAI AI Medimentor」がGoogle Cloud 生成 AI Innovation Awardsで最優秀賞を受賞しました。このアプリは、MR(医薬情報担当者)の自己学習を支援し、医療従事者への適切な医薬品情報提供を目指すものです。今回のnoteでは、開発に携わった3名のメンバー(田村崇、岡田智寛、藤森立)が、開発の経緯、アプリの概要、アプリ及びAIの実装の中核について紹介します。


生成AIを活用した医薬品情報提供トレーニングアプリ「Chugai AI MediMentor」のMVP開発

まずは、田村よりMedimentorの開発の経緯、機能、使用フローを紹介します。

近年、生成AIの急速な進化により、テキスト生成、画像生成、さらにはコード生成に至るまで、ビジネスにおける生成AIの応用範囲は日々拡大しています。特にヘルスケア産業では、創薬研究からヘルスケアソリューションといったあらゆる分野において、業務効率化だけでなく、新たな製品やサービスの創出、顧客体験の向上、意思決定支援など、ビジネスのあらゆる側面への利活用が期待されています。この潮流の中、私たちはGoogle Cloud主催の「第2回生成AI Innovation Awards」に社内のデータサイエンティスト・ITエンジニアによる内製開発チームで挑みました。

本開発では、3つの主軸を設定しました。「最新の生成AI技術を用いた革新的な機能を有する」、「ビジネスへ利活用可能なアプリケーション」、そして「社会貢献につなげる」です。

第一の軸である「最新の生成AI技術を用いた革新的な機能を有する」については後述の技術核心部分で詳細を説明しますが、その要点は「生成AIがユーザーに質問を投げかける」という点にあります。一般的に、GeminiなどのLLMはユーザーの質問に対して、LLMが保有する知識を用いて回答します。しかし、私たちは従来のアプローチを逆転させ「生成AIが保有する知識を用いてユーザーに質問をすること」という挑戦的な取り組みを行いました。

第二の軸、「ビジネスへ利活用可能なアプリケーション」ついては、中外製薬が目指している「患者中心の高度で持続可能な医療の実現」¹⁾に向けて重要な「疾患・医薬品に関する正しい情報の提供」に着目しました。医師が製薬企業のMR(医薬情報担当者)から得たい情報として、「医薬品の安全性情報」へのニーズが非常に高いことが知られています。しかし、医師の質問に迅速かつ正確に回答するためには、添付文書や適正使用ガイド等の膨大な資料の中から正確な情報を抽出し、正確に伝達する高度な専門性が要求されます。この専門性を身につけるには非常に労力がかかります。医療従事者とのコミュニケーションをロールプレイ形式で練習できるアプリケーションがあれば、効率的に専門性を習得でき、医療従事者への最適な情報提供の推進、ひいては患者さんへのより質の高い最適な医療の提供につながると考えました。

第三の軸、「社会貢献につなげる」ついては、前述のビジネス面での貢献にくわえ、他業界を含めた生成AIの潜在能力を最大限に活用できるユースケースを提示することで、生成AIのさらなる活用促進に寄与することを目指しました。

これらの目標を達成するために、私たちは、医療従事者への適切な情報提供に必要な専門性の強化、および複雑な医療情報の効果的な説明のトレーニングを目的としたロールプレイシミュレーター「Chugai AI MediMentor(以降、Medimentor)」を開発しました。

1)中外製薬が取り組む「患者中心」 のとりくみについてはこちら(https://www.chugai‐pharm.co.jp/profile/overview/patientcentricity/index.html#sec01

Medimentorの概要

Medimentorは、トップ画面、ロールプレイ画面、結果表示画面の順に遷移する仕様となっています。

トップ画面

 トップ画面では、面談内容、前提条件、達成目標などユーザーがロールプレイしたいシチュエーションを設定します。トップ画面で設定した条件に基づいてMedimentorは質問を生成するので、ユーザーは自分の練習したいシチュエーションを正確に入力する必要があります。シチュエーションの設定完了後、右下のボタンでロールプレイをスタートすると「ロールプレイ画面」に遷移します。

ロールプレイング画面

 ロールプレイ画面は、「①:ユーザーの発言」、「②:Medimentorからの質問」、「③:回答のヒント」、「④:根拠資料」で構成されます。ユーザーの発言が①にリアルタイムに表示され、Medimentorからの質問が②に表示されます。Medimentorの質問に対して正確に回答するためのヒントが③に表示され、回答の根拠資料となる添付文書や適正使用ガイドなどの資料名とページ数が④に表示されるので、ユーザーは③、④の情報を参考に根拠資料を用いて回答しロールプレイを進めます。ロールプレイはトップ画面で設定した達成目標をクリアするまで継続され、目標を達成すると面談終了となり、結果表示画面に遷移します。

ロールプレイングの結果表示画面

結果表示画面では、ロールプレイの評価として正確性、時間、改善点などがフィードバックされます。結果の評価においても生成AIを用いていますが、評価における工夫点は後述の技術の中核の項で説明します。


 生成AIを活用した効率的な開発プロセス

デジタル戦略推進部アジャイル開発推進グループ、tech工房の岡田智寛(トップ写真左)です。岡田からは、生成AIを活用し効率化したMedimentorの開発プロセスについて紹介します。
アジャイル開発推進グループの探索的アジャイル開発プロセスでは、「アイデア」「PoC企画」「PoC実施」「サービス化」というプロセスがあります。

ここでは「MVP設計・要件整理」、「技術検証・評価」、「プロトタイプ設計・開発・評価」について紹介します。
MVP設計・要件整理では「アイデア」や「PoC企画」の情報を基にMVP設計を行います。プロダクトオーナーを中心にサービスデザインという手法とMiroを用いながら要件整理を実施します。具体的にはサービスデザインにてユーザーストーリーを作成し、PoC検証に必要なMVPを作成します。

ユーザーストーリーを基にJiraを用いてストーリーを作成し、MVPで必要なストーリーを優先順位高として整理していきます。
またユーザーストーリーを基にワイヤーフレームを描き、ユーザー視点で価値のあるサービスとなっているか、UI/UX観点で問題ないかを確認します。

ユーザーストーリーやMVPができてきたらアーキテクトがシステム全体のアーキテクティングを実施します。「可用性」「パフォーマンス」「セキュリティ」を中心に簡易的に非機能要件の設計を行います。
また、クラウドのサービス選定、言語やフレームワーク、リポジトリやCI/CDなど選定します。
 
Medimentorの開発ではアプリ/インフラ/データサイエンスとチームが分かれているため、各チームとコミュニケーションを実施し、アーキテクチャなどのレビューや技術的課題の抽出などを実施します。

技術検証・評価では各チームで抽出された技術的課題について各々検証を行います。課題に対して必要そうな技術、難易度、期間を考慮して検証対象と実施者を割り振ります。実施者は検証を実施し、結果をConfluenceにまとめチーム内で評価を行います。評価結果によってはMVP検証にて重いタスクとなる可能性があり、POに相談することもあります。
 
Medimentorの開発では生成AIからのレスポンスを基に合成音声を作成し、人物画像の口を動かすなどありましたが、MVP開発期間・コスト・他タスクなどを考慮し、結果MVPからは外すことになりました。
 Jiraのストーリーを書き終え、技術的な課題も一通り検証が終わったらチーム全員でストーリー等を確認します。一通り確認した後、開発者が各ストーリーに対してタスクを切り、担当者を割り振り、プロトタイプ設計・開発を行います。

ここまでで要件整理~開発まで一連の流れを説明しました。ここからは生成AIがどこで利用されているかについてお話しします。

ワイヤーフレーム作成ではタイトルやコンセプトを考慮した画像を必要な際、Imagenを利用して画像生成を行いました。生成された画像は開発でも利用できたため、開発効率の向上にも寄与しました。

アーキテクティングでは主に非機能要件について画像とプロンプトをインプットにレビューを実施してもらいました。SPOF(Single Point of Failure:単一障害点)が無いか、セキュリティ的な問題は無いか、可用性、パフォーマンスはスケーリングしやすいかなど生成AIとやり取りいたしました。
 
開発・評価ではGemini Code Assistも利用して、コード生成やレビュー、ファイル内をコンテキストにした質問などに生成AI を活用しました。トータル50%程は開発期間が短縮できたと思います。
具体的にはフロントエンドではワイヤーフレームとプロンプトを用いて、コード生成を実施し60%程開発期間を短縮、バックエンドではプロダクトコード以外にテストコードの生成なども実施し、40%程開発期間を短縮、インフラではTerraformを記述するのが初めてだった人のフォローなどに生成AIが活用でき、50%程開発期間を短縮できたと思います。このように開発過程においても生成AIを活用したことで、1週間程でPoCアプリをデプロイできました。


Medimentorの中核を担うAI技術、開発の舞台裏

中外製薬のデジタル戦略推進部データサイエンスグループの藤森立(トップ写真左から3番目)です。Medimentorの中核を担うAI技術は、主に私が所属するデータサイエンスグループの徳山・水谷、そして私、藤森の3名で開発を行いました。本節では、この中核技術と、それらがどのように開発されたかを紹介します。
まず、AI側のロジック概要を示します。

質問する生成AI

私たちが今回一番悩まされたのがロジック概要図内①の「質問する生成AI」をどのように実現するか、というポイントでした。Medimentorはユーザーが受け答えを練習するという性質上、ロールプレイにおいてはAIに質問者を担当してもらい、ユーザーへの質問を投げかけてもらう必要があります。しかしながら、これがなかなかうまくいきません。

システムプロンプトで医師のロールを与え、質問者として振る舞うように指示しても、逆に製薬企業の社員というロール設定であるユーザーに患者様の状態を質問してしまいます。
 
このような振る舞いは、生成AIのユースケースに占める質問応答の割合が多いこと、代表的なベンチマーク(MATH,GPQA,MMLUな)が知識・問題解決能力を問うものになっていることなど、現状の生成AIの学習指向性が質問応答に向かうトレンドがあることに由来するものだと考えられ、現在の生成AIがもつ一種のバイアスであると捉えております。
 
このような状況から、私たちはGeminiが質問まで行うロールプレイを実現してくれるように数多のプロンプトを試していきました。このプロンプトエンジニアリングは精神的にも肉体的にもタフな作業で、うまく行かないときはGeminiの気持ちになってみたり、また今回合宿にて開発を行ったため、地の利を生かし屋外レクでリフレッシュするなどして心身の健康を保って実験を続けました。

そうこうして、ようやくGeminiに質問をしてもらうための以下3つのポイントを見つけることができました。

1.     生成AIとユーザーのロールを明確に与える
2.     シチュエーションを詳細に与える
3.     質問の骨格を与え、選択させる

1、2点目は一般的なプロンプトテクニックと重なりますが、重要なのは3番目の「質問の骨格を与え、選択させる」という点です。 

Geminiに自由に質問をしてもらおうとすると、問題解決側に回ろうとしてしまいます。しかし、あらかじめ質問・回答リストを与え、そこから1つずつ質問を選択 し、対話において違和感のないような質問として出力してもらうシミュレーターとしてGeminiを取り扱うことによって、安定したロールプレイを実現することができました。これはある種のメタ認知的テクニックとして分類することができるかもしれません。こうしたテクニックをオーガナイズし、システムプロンプトを創りあげていきました。 

質問・回答生成

ロールプレイAIが質問・回答リスト使用するため、シチュエーション設定と対応した資料(100ページ超!)を入力として、質問・回答リストを作成するような生成AIワークフロー(ロジック概要図内③)の技術開発にも挑戦しました。

この技術開発のため、GoogleCloudが提供するフルマネージドなRAG:VertexAI Searchや、Langchainに資料の目次情報を利用したカスタムRAGなど種々の手法を検討しました。そうした手法の中で最もパフォーマンスが良かったのがGeminiのロングコンテキストを活用したアプローチです。Gemini 1.5シリーズの最大入力トークン数はFlashが約100万、Proであれば約200万という驚きのサイズです。これは100ページ超のPDF資料をも余裕をもって受け付け、続けてのチャットが可能。ロングコンテキストを活用することで、RAGのような断片的な入力ではなく、資料全体を参照しての回答が可能になります。Geminiの強力なロングコンテキストとプロンプトエンジニアリングによって、ロールプレイを行うGeminiのためのプロンプト構築半自動化を実現しました。なお、図表の読み取りについては不得手な部分があることを確認しており、今後の技術的な改善点であると考えています。

ヒトのハルシネーションをチェックするAI

生成AIが事実と異なる内容を出力する現象をハルシネーションといいます。生成AI領域ではこのハルシネーションを抑制するための技術開発が活発に行われています。しかしながら、事実と異なることを言ってしまったり、知らないがゆえに言葉に詰まってしまったりということは人間にもあることです。Medimentorはユーザーの応答に存在するハルシネーションをチェックし、それを伝えることでユーザーのトレーニングをサポートします。

処理フローとしては、ロールプレイの会話履歴と質問・回答集を照合し、情報の正誤判定を行います。また会話履歴と正誤判定の結果をもとにしてフィードバックの作成を行います。これらの処理もGeminiによって実行しています。

当初から計画していたこの機能ですが、開発初期はロールプレイ機能も含めて、Geminiに資料を参照させながらの応答というアイデアで検討していました。しかし、入力データが多いほどGeminiが必要とする応答時間が長くなる点や、応答をしながら質問・回答生成を行うとGeminiの振る舞いが期待するものから乖離してしまうという問題があり、開発が難航。しかし、ロールプレイを実現するために質問・回答リストをあらかじめ用意しておくというテクニックを発見したことによってハルシネーションチェック機能も容易に実現することが可能になりました。これに関してはロールプレイ機能の開発で苦しんだことが期せずして功を奏した形になります。

実際のハルシネーションチェック機能はこの事実の相違だけでなく、Gemini持ち前の言語能力を生かし、ユーザーの言葉遣いなどのレビューをしてくれる機能も搭載されています。

また、本機能を調整している中、開発陣で意見が揃ったのは、ユーザーへのレビューは思いやりのある文章になるようにしようということです。指摘されるのは誰でも心理的抵抗がありますから「ユーザーがスキルアップすることに集中できるよう精神的負荷をできるだけ下げよう」という意見が一致したことは、いいチームだなぁとうれしかった思い出のひとつです。

このように様々な実験や経験を経て、Medimentorの中核を担うAI技術は少しずつ構成されていったのでした。

受賞の喜びと今後の展望

今回の最優秀賞を受賞できたことは、チーム全員にとって大きな喜びです。特にデータサイエンティストとITエンジニアがお互いの専門性を融合させ内製開発したアプリケーションで受賞できたことは、技術者として大きな自信につながりました。
今回開発したロールプレイ形式のシミュレーターは、患者さん向けのコミュニケーションツールや製薬企業における査察対策など様々なことに応用可能だと考えています。ユーザーのニーズに合わせ、より使いやすいアプリケーション開発を行い、今後も最先端のデジタル技術を用いたヘルスケアソリューション開発に挑戦し、医療への貢献を目指していきます。

 

あわせて読みたい

tech工房の記事

データサイエンティストの記事