エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

AIでアンケートQAはどこまで自動化できるか?プロンプトエンジニアリングの試行錯誤と実践知

【Unit7 ブログリレー1日目】エムスリーエンジニアリンググループの秦野です。
Unit7というチームで、主に医師向けアンケートサービスの開発・運用を担当しています。

私たちのチームでは「ibis」というアンケート作成・配信システムを使っています。今回はこのシステムにおける業務改善の一環として、AIを活用してアンケートの品質保証(QA)プロセスを大幅に効率化した話をご紹介します。

▼ibisについては次のブログ記事にて概要を説明しています
新しいアンケートシステムをつくった(Goとシステム概要編) - エムスリーテックブログ

アンケート作成のプロセスと課題

まず、私たちのアンケート作成プロセスと、長年チームを悩ませていた課題についてお話しします。

アンケート作成は、おおむね次のようなステップで行われます。

  1. スプレッドシートで調査票作成:(アンケートの仕様書にあたるドキュメント)
  2. ibis管理画面でアンケート画面を作成:(調査票の内容を目視で転記・設定)
  3. 作成したアンケートのQA:(調査票と作成画面の文言確認と設定チェック)
  4. アンケート配信

特に課題となっていたのが、3番のQAプロセスです。

ibisで配信しているアンケートは長期に渡って継続的に回答を収集するアンケートで、6ヶ月に1度調査票が更新されます。
更新された内容を元にアンケートを更新しますが、更新されるアンケートの数が約40種類ほどあるため、調査票の内容通りにアンケートが作成されているかどうかをすべて確認するのは非常に時間がかかる上、修正ミスの見逃しが発生し、アンケートを修正して回答を再収集する手間が発生することがありました。

AIによる「差分チェック」アプリケーションの開発

そこで私たちは、このQAプロセスにAIを導入し、調査票とアンケート定義の「差分」を自動検出する仕組みを構築しました。人力による目視確認からAIによる自動チェックに切り替えることで、QAの精度と効率を両立させることが目的です。

この仕組みは、Dify (https://dify.ai/jp) というAIアプリケーション開発プラットフォームを活用しました。Difyの強力な点は、コーディングをほとんど行うことなく、画面上の操作でテキスト抽出やLLM(大規模言語モデル)といった部品を組み合わせ、直感的にAIアプリケーションを構築できることです。

Difyのアプリケーション作成画面

完成したツールの利用画面(2つのCSVをアップロードするだけ)

実行結果(調査票とアンケート定義の差異がリストアップされる)

AIに読み込ませるためのデータ準備

次に、AIが理解しやすい形式にデータを整える方法について説明します。

調査票(スプレッドシート)

調査票はスプレッドシート上で次のような形式で作成されます。

サンプル調査票

これをAIで読み込みしやすいようにcsvファイルに変換します。

アンケート定義(ibis)

アンケート定義もAIで読み込みしやすいようにcsvファイルとして出力します。
ibisで作成したアンケート定義はデータベースに保存されるのでSQLでクエリした結果をcsvとして出力します。

アンケート定義のcsv出力結果は次のような形式となります。

サンプルアンケート定義

こうして準備した2種類のCSVをツールにアップロードし、プロンプトを設定してLLMに差分チェックを依頼します。実際に使用しているプロンプトの骨子は次のようになっています。

# 入力データ
## 調査票定義
{{#1749022266914.text#}}
### 調査票定義入力形式
3列目に設問があります。設問は複数行の場合があります。
設問が複数選択の場合5列目に選択肢が複数行にわたって並びます。
・・・
他の設問の回答データを設問文内に埋め込むと部分では【】で文字列が囲まれています。

## アンケート定義
{{#1749022311486.text#}}
### アンケート定義入力形式
1列目に行番号があります。
3列目に設問番号があります。
・・・
他の設問の回答データを設問文内に埋め込むと部分では${}で文字列が囲まれています。

# 指示
あなたは文章の校正を行うAIアシスタントです。
入力データ、調査票定義とアンケート定義を元に
調査票が正としてアンケート定義と設問、選択肢を突き合わせてアンケート定義に誤りがないかを確認してください。
・・・
調査票の最初から最後まで漏れなく、アンケート定義と突き合わせて確認し、できるだけ多くの誤りを見つけるよう全力を尽くしてください。

## アンケート定義誤りのパターン
以下の誤りがないか特に念入りに確認してください。
・・・

## アンケート定義誤りでないパターン
以下のパターンはアンケート定義の誤りではありません。
・・・

# 出力
調査票定義とアンケート定義を突き合わせた結果を出力してください。
誤りがあった場合はアンケート定義の該当する行番号も出力してください。

精度を大幅に向上させるためのプロンプトエンジニアリングの試行錯誤

このツールの中核であるプロンプトは、最初から完璧だったわけではありません。単純な指示ではAIが意図通りに動かず、多くの試行錯誤が必要でした。ここでは、最終的に高い精度を実現するために特に効果的だった3つの工夫を、私たちが直面した課題と共にご紹介します。

工夫1:AIを「優秀なレビュアー」に育てるための「事前知識」の定義

課題: 当初、「2つのCSVを比較して間違いを見つけて」という単純な指示では、AIは各CSVのどの列が何に対応するのかを理解できず、無関係な列同士を比較して意味のないエラーを報告(ハルシネーション)することが頻発しました。

解決策: そこで、プロンプトの冒頭で各ファイルの構造を「データ定義」として明記しました。「調査票定義の3列目は設問文」「アンケート定義の8列目は選択肢」といったように、人間が仕様書を読むかのようにAIにコンテキストを叩き込みました。これにより、AIは初めて両ファイルの項目を正しく紐付けて比較できるようになり、その精度は大幅に向上しました。

工夫2:誤検知と検知漏れを防ぐ「判断基準」の明示

課題: データ構造を理解させても、次に「何がエラーで、何がエラーでないか」という判断基準の曖昧さが問題になりました。例えば、仕様上許容される表記揺れ(例:調査票の【】とアンケート定義の${})をエラーとして報告したり、逆に人間なら気づくはずの微妙な言い回しの違いを見逃したりしました。

解決策: この課題を解決したのが、「アンケート定義誤りのパターン」と「アンケート定義誤りでないパターン」を具体例としてプロンプトに組み込むことです。これはAIに「Few-Shot Learning(少数事例学習)」をさせているのに似ています。良い例と悪い例を具体的に示すことで、AIの判断基準を我々の基準へとチューニングしました。これにより、「仕様の範囲内」の差異は無視し、本当に修正が必要な箇所だけを的確に指摘できるようになりました。

工夫3:AIの「集中力」を持続させるためのデータ構造の工夫

課題: プロンプトを改善しても、アンケートが長くなるとAIが途中で力尽きるかのように、後半部分のチェックが漏れるケースがありました。「最後まで全力で確認して」といった精神論的な指示だけでは限界がありました。

解決策: 最終的な決め手となったのは、技術的な工夫でAIの注意を誘導することでした。具体的には、アンケート定義CSVの1列目に連番(行番号)を付与し、プロンプトで「エラーを報告する際は、この行番号を必ず記載すること」と指示しました。この単純なルールがAIの処理プロセスに「1行ずつ確認し、番号と共に報告する」という制約を与え、結果としてファイルの最初から最後まで網羅的にチェックするようになり、検知漏れがなくなりました。

これらの工夫は、単に指示を出すだけでなく、AIがタスクを正確に遂行できるよう「環境を整え、手本を見せ、道筋を照らす」という、いわば「AIの教育」に近いアプローチでした。この泥臭い改善の積み重ねが、本ツールの高い実用性を実現する鍵となりました。

開発の成果と得られた効果

このツールを導入した結果、次のパターンの誤りを高精度で検出できるようになりました。

  • 設問・選択肢の文章の差異

  • 設問・選択肢の重複や抜け漏れ

実際にこのツールを導入したことで、これまで見逃されがちだった細かな、しかし重要な誤記を発見できました。例えば、調査票で「ガングリオシドーシス」と表記されていたものが、アンケート定義では「ガングリオドーシス」と誤記されていましたが、ツールが即座にこの定義ミスを検出してくれました。

本アプリケーションの開発はcsvを読み込ませてプロンプトを調整していく作業を行うだけで実質半日もかからず完了させることができました。Difyを利用することでUIは自動で作成されるのでプロンプトの改善に工数を割くことができました。
従来型のアプリケーションの開発では調査票定義とアンケート定義に大きな乖離があるのでかなり複雑な文字列チェックのプログラムを作成する必要があり、数日〜数週間の工数が見込まれたでしょう。この開発スピードこそ、AI活用の大きな魅力だと思います。

今後の展望:「チェック」から「自動生成」へ

今回の取り組みはQAプロセスの効率化でしたが、私たちはさらにその先を考えています。

現在、転記ミスが発生する根本的な原因は「人間が調査票から手作業でアンケートを作成している」点にあります。将来的には、調査票(スプレッドシート)から直接アンケート定義をAIが自動生成する仕組みを考えています。

最終的には、人間は「調査票」という自然言語の仕様書を作成するだけで、AIがアンケート定義を自動生成する世界を目指しています。これにより、QAプロセスだけでなく、作成プロセスそのものを自動化できると考えています。

まとめ

今回、「形式の異なるCSV同士の比較」という、一見するとAIには不向きに思えるタスクでも、プロンプトとデータの「渡し方」を工夫することで、驚くほど高い精度で差異の検出を自動化できることがわかりました。

AIは銀の弾丸ではありませんが、適切なプロンプトエンジニアリングによって、これまで当たり前だと思っていた手作業を劇的に効率化できる強力なパートナーになります。本記事が、皆さんの業務にAIを取り入れるための一助となれば幸いです。

We are Hiring!

エムスリーでは一緒にサービスの信頼性を高めていけるエンジニアを絶賛募集中です。ご興味ある方は是非カジュアル面談等ご応募ください!

エンジニア採用ページはこちら

jobs.m3.com

エンジニア新卒採用サイト

fresh.m3recruit.com

カジュアル面談はこちら

jobs.m3.com

また、リサーチプロダクトチームに関する詳細は以下をご覧ください。