病院やクリニックの受付業務において、患者様の症状を聞き取り、適切な診療科へ案内する「トリアージ」や「問診」のプロセスは、専門知識と時間を要する業務です。
Difyの「Patient Intake Chatbot(患者受付チャットボット)」テンプレートは、対話形式で患者の基本情報(年齢・性別・症状)を自動的に収集し、AIが適切な診療科を提案する高度なワークフローです。
この記事では、Dify標準テンプレートをベースに、GeminiとGPT-4oを適材適所に配置して最適化したモデルの内部構成を解説します。
Patient Intake Chatbotとは:対話型自動問診システム
このチャットボットは、ユーザーとの会話を通じて必要な情報(年齢、性別、症状)が揃うまで質問を繰り返し、全ての情報が集まった段階で診断(診療科の提案)を行うシステムです。
例えば、ユーザーが「お腹が痛いです」とだけ伝えた場合、ボットは自動的に「年齢と性別を教えてください」と不足情報を聞き返します。
一度に「20代男性、腹痛があります」と入力された場合は、即座に診療科を提案します。このように状況に応じた柔軟な対応が可能です。
Difyで構築する機能概要
本テンプレートでは、以下のロジックで問診を実行します。
- 情報の抽出:ユーザーの入力から必要なパラメータ(年齢・性別・症状)を抽出します。
- 不足確認(スロットフィリング):必須項目が埋まっているかを確認し、未入力があれば質問を行います。
- 診療科の提案:全ての情報が揃った段階で、GPT-4oが適切な診療科を判断して回答します。

【重要】最適化モデルのワークフロー詳細(ノード表)
このテンプレートは、条件分岐(IF/ELSE)を駆使して、ユーザーの入力状態に合わせた最適なレスポンスを生成します。
以下は、実際に動作する完成版モデルの全ノード構成と設定内容です。
| アイテム名(ノード名) | 処理内容・設定詳細 | |
|---|---|---|
| 開始 (Start) | ワークフローの開始 ユーザーに対し、性別、年齢、症状の入力を求めます。一括入力でも分割入力でも対応可能な設計です。 初期変数:age, gender, symptoms(全て空でスタート) | |
| 最初のメッセージですか? (IF/ELSE) | 初回判定 会話のラリーが1回目かどうかを判定します。 ・IF(初回):一括抽出処理へ ・ELSE(2回目以降):不足情報の個別確認へ | |
| 【IF:初回の場合】 | ||
| ∟ 患者情報の抽出 (Parameter Extractor) | 一括情報抽出(使用AI:Gemini 2.5 Pro) ユーザーの最初のメッセージから、年齢・性別・症状の3要素を可能な限り抽出します。 | |
| ∟ 年齢・性別・症状を割り当て (Variable Assigner) | 変数の更新 抽出されたデータをそれぞれの変数(age, gender, symptoms)に保存します。 | |
| ∟ 出力=0 / フラグ更新 | ステータス管理 「最初のメッセージ」フラグを更新し、次回のループでELSEルートに入るようにします。 | |
| 変数アグリゲータ (Variable Aggregator) | 情報の統合 これまでの会話で蓄積された変数の状態を整理します。 | |
| 【ELSE:2回目以降(不足確認)】 | どの情報が足りないかを判定し、分岐します。 | |
| ∟ IF (年齢が空) | 年齢確認フロー 変数 age が空の場合に実行されます。 | |
| ∟ 患者の年齢を抽出 (LLM) | 年齢の聞き取り(使用AI:Gemini 1.5 Flash) ユーザーの直前の回答から年齢情報を抽出します。 | |
| ∟ 年齢を割り当て | 抽出した年齢を変数 age に保存します。 | |
| ∟ チャット(年齢別)(LLM) | (使用AI:Gemini 1.5Flash)次の質問(性別や症状)へ誘導、または年齢がまだ不明な場合は再度質問します。 | |
| ∟ ELSEIF (性別が空) | 性別確認フロー 変数 gender が空の場合に実行されます。 | |
| ∟ 患者の性別の抽出 (LLM) | 性別の聞き取り(使用AI:Gemini 1.5 Flash) ユーザーの回答から性別情報を抽出します。 | |
| ∟ 性別を割り当て | 抽出した性別を変数 gender に保存します。 | |
| ∟ チャット(性別別)(LLM) | (使用AI:Gemini 1.5Flash)次の質問へ誘導します。 | |
| ∟ ELSEIF (症状が空) | 症状確認フロー 変数 symptoms が空の場合に実行されます。 | |
| ∟ 患者の症状の抽出 (LLM) | 症状の聞き取り(使用AI:Gemini 1.5 Flash) ユーザーの回答から具体的な症状を抽出します。 | |
| ∟ チャット(性別別)(LLM) | (使用AI:Gemini 1.5Flash)次の質問へ誘導します。 | |
| ∟ 症状を割り当て | 抽出した症状を変数 symptoms に保存します。 | |
| null は変数に含まれますか? (IF/ELSE) | 完了判定 全ての変数(年齢・性別・症状)が埋まっているかを確認します。 ・IF(欠けがある):不足している項目について質問する回答を生成。 ・ELSE(全て揃った):診断フェーズへ移行。 | |
| 【ELSE:診断フェーズ】 | ||
| ∟ 推奨部門 (LLM) | 診療科の提案(使用AI:GPT-4o) 集まった3つの情報を基に、受診すべき診療科とその理由、緊急性の有無などを総合的に判断します。 ※GPT-4oの高度な推論能力を利用。 | |
| ∟ 部門を割り当て | 診断結果を保存します。 | |
| ∟ 回答 (Answer) | 最終案内 ユーザーに「推奨される診療科:〇〇科」とアドバイスを表示します。 | |
DifyでPatient Intake Chatbotを構築・有効化する手順
以下の手順で、この自動問診システムを自身のワークスペースに展開できます。
- テンプレートの選択:Difyダッシュボードの「探索」から「Patient Intake Chatbot」を選択し、「ワークスペースに追加」をクリックします。
- アプリ設定:アプリ名(例:自動問診ボット)を設定し、作成します。
- ノードの確認:ワークフローキャンバスにて、上記のノード表通りに条件分岐(IF/ELSE)が設定されているか確認します。特に「不足情報の確認ループ」が正しく接続されているかが重要です。
- モデル設定:抽出タスクには高速なGemini Flash、最終判断には高精度なGPT-4oが割り当てられているか確認し、APIキーを設定します。
- 動作確認(プレビュー):プレビュー機能使い、「腹痛がします」→「年齢は?」→「30歳です」といった対話形式で情報が埋まっていくかテストします。

このテンプレートを活用するメリット
最大のメリットは、「必要な情報が揃うまで粘り強く、かつ自然に対話を続ける」システムが構築済みな点です。
- 受付業務の効率化:基本的な問診を自動化することで、医療スタッフの負担を軽減し、待ち時間を短縮できます。
- 情報の漏れ防止:システムが必須項目(年齢・性別等)の入力を強制的にチェックするため、聞き漏らしがなくなります。
- 柔軟な入力対応:「30歳男性、頭痛」と一言で入力しても、「頭が痛い」とだけ入力しても、どちらにも適切に対応できます。
まとめ
Patient Intake Chatbotテンプレートは、医療現場における「問診」をモデルにしていますが、その本質は「ユーザーから必要な情報を過不足なくヒアリングする」という汎用的なタスクです。
この仕組みは、不動産の条件ヒアリング、採用面接の一次対応、カスタマーサポートの初期振り分けなど、様々なビジネスシーンに応用可能です。
ミラーマスター合同会社では、このようなヒアリング型チャットボットの導入支援や、既存の予約システムとのAPI連携などのカスタマイズ開発も承っております。窓口業務の自動化をご検討の際は、ぜひお気軽にご相談ください。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー(ミラーマスター合同会社)



VPSサーバの選定





コメント