1_担当判断型社内問い合わせチャットフロー
このドキュメントは、Dify でチャットフローを作成するための演習手順書です。
1. 説明
ユーザーからの社内問い合わせを入力すると、AIが内容を「人事」「情シス」「総務」「そのほか」の適切な部署に自動で振り分け、各部署の専門ナレッジから最適な回答を生成するチャットフローです。 「質問の分類」と「専門知識に基づく回答」を自動化することで、窓口業務の負担を軽減し、迅速で正確な社内サポートを実現します。
Tips:モデルによる設定の違い
GPTモデルとGeminiモデルでは設定内容に違いがあります。 特にワークフローやチャットフローのLLMノードでは、GPTモデルはSYSTEMプロンプトのみ必須ですが、GeminiモデルではUSERプロンプトが必須です。この演習手順ではGeminiモデルをデフォルトにしているため、USERプロンプトを設定する手順となっています。
2. 使用するノード
- ユーザー入力(開始ノード): 問い合わせ内容(質問)を受け取る。
- 質問分類器ノード: 質問内容から「人事」「情シス」「総務」「そのほか」のいずれかに分類する。
- 知識検索ノード: 分類された部署に対応するナレッジベースから関連情報を取得する。
- LLMノード: 取得した情報に基づき、各部署の窓口として回答を作成する。
- 回答(終了ノード): 生成された回答をユーザーに表示する。
3. Dify設定手順
手順①:ナレッジの構築
演習環境では事前に登録済みなのでこの作業は不要です。
各部署の規定ファイルについて順にナレッジへの登録を行います。
- 人事:human_resources.md
- 情シス:it_support.md
- 総務:general_affairs.md
- Dify上部メニューの「ナレッジ」をクリック ⇒ 「ナレッジベースを作成」をクリック。
- 「ファイルまたはフォルダをドラッグアンドドロップ」の部分に、各部署の規定ファイルをアップロードして「次へ」。
- チャンク設定:デフォルトのまま「チャンクをプレビュー」をクリック。
- インデックス方法:デフォルトのまま「高品質」を選択。
- 埋め込みモデル: デフォルトのまま「text-embedding-3-small」を選択。
- 検索設定: 「ハイブリッド検索」を選択。
- 保存して処理をクリック。
手順②:チャットフローアプリの作成
- 上部メニューから「スタジオ」を選択。
- 「最初から作成」→「チャットフロー」を選択。
- アプリ名:チャットフロー:担当判断型社内問い合わせチャットフロー
- 説明:社内問い合わせがどの部署に対しての問い合わせか振り分けを行い、担当部署のナレッジから回答するチャットフロー。
- 「作成する」をクリック。
手順③:チャットフローの設定
チャットフローのキャンバス上には、初めからユーザー入力ノード、LLMノード、回答ノードが配置されています。
そのまま作業を始めても構いませんが、以下手順では、順序立てて作成するために、まずユーザー入力以外のノードを削除してから、順に配置・設定しています。
(ノードの削除は、ノードを選択してDeleteキーです。)
1. ユーザー入力ノード
- ユーザー入力ノードは初期設定で作成されているものをそのまま使うので変更はありません。
- 開始時のメッセージを有効にします。画面右上にある「機能」というボタンをクリックし、「開始のあいさつ」を有効にし、以下の内容を入力します。
こんにちは!社内の「どこに聞けばいいかわからない」を解決する案内AIです。人事・情シス・総務に関する質問を投げかけてください。社内規定を確認し、担当部署の特定と一次回答を自動で行います。「PCが動かない」「休暇を取りたい」など、まずは今のお困りごとを教えてください。
2. 質問分類器ノード
- ユーザー入力ノードの右にある「+」をクリックして、「質問分類器」を追加します。
- 入力変数:
{{sys.query}}を選択。 - モデル:
gemini-2.5-flash-lite - クラス設定:以下の4つのクラスを追加します。
ラベル名:人事
説明:休暇、勤怠、在宅勤務、出張、精算、人事制度、評価、福利厚生に関する問い合わせ
ラベル名:情シス
説明:PC、アカウント、パスワード、VPN、ネットワーク、ソフトウェア、セキュリティに関する問い合わせ
ラベル名:総務
説明:備品、会議室、入館、施設、郵送、社内イベント、オフィス環境に関する問い合わせ
ラベル名:そのほか
説明:いずれにも該当しない無関係なユーザー入力、挨拶、雑談、社内ルールに関係のしない問い合わせ
3. 知識検索ノード(分岐の作成)
質問分類器の各ラベルから、問い合わせ内容に応じたナレッジを参照する設定を行います。まずは人事のルートを作成し、それを複製して他の部署(情シス・総務)のルートを作成します。
1. 知識検索ノード(人事)の設定
- 質問分類器ノードの「人事」ラベルの右にある「+」をクリックして、表示される一覧から「知識検索」を選んでノードを追加します。 以下の操作は、画面の右に出る設定画面で行います。
- 設定画面上部のノード名を「知識検索_人事」に変更します。
- クエリテキスト:クリックして
{{sys.query}}(システム変数)を選択します。 - ナレッジベース:事前に作成した「human_resources.md」を選択して追加をクリックします。
2. ノードの複製と他部署への設定
- 作成した「知識検索_人事」ノードを右クリックし、「複製」を選択して2つコピーを作成します。
- 複製したノードをそれぞれ、質問分類器の「情シス」「総務」ラベルと線でつなぎます。
-
それぞれの設定画面を開き、以下の通り変更します。
-
情シスルート:
- ノード名:「知識検索_情シス」
- ナレッジベース:「it_support.md」に変更
-
総務ルート:
- ノード名:「知識検索_総務」
- ナレッジベース:「general_affairs.md」に変更
-
4. LLMノード(回答作成)
各部署のナレッジから得られた情報をもとに、回答文を生成する設定を行います。こちらも人事ルートをベースに作成・複製します。
1. LLMノード(人事)の設定
- 「知識検索_人事」ノードの右にある「+」をクリックして、「LLM」ノードを追加します。
- ノード名を「LLM_人事」に変更します。
- モデル:
gemini-3.0-flash-preview - コンテキスト:クリックして
知識検索_人事 resultを選択します。 -
システムプロンプト(SYSTEM):
あなたは社内の担当部署の窓口です。 以下の問い合わせに対して、参照されたナレッジの内容に基づき回答してください。 【担当部署】 {{質問分類器.class_name}} 【参照ルール】 {{#context#}} 【出力形式】 1. 担当部署: 2. 回答(3〜6行) 【重要】 - ナレッジに書いていないことは断定しない - 不明な場合は「担当部署へ確認してください」と案内する -
ユーザープロンプト(USER):
+メッセージ追加をクリックし、以下を入力します。【問い合わせ】 {{sys.query}}
↑{{変数}}の設定部分は手入力の必要があります
上記の{{変数名}}の部分は、これ以前のノードで設定した変数を指定するものです。 コピーペーストするだけでは認識されないので、手入力で「{」または「/」を入力して表示される変数候補の中から選んでください。
2. ノードの複製と修正
- 「LLM_人事」ノードを右クリックし、「複製」を選択して2つコピーを作成します。
- 複製したノードをそれぞれ「知識検索_情シス」「知識検索_総務」ノードと線でつなぎます。
- 各ノードの設定画面で、以下のコンテキスト変数を正しく指定し直します。
- LLM_情シス:コンテキストを
{{知識検索_情シス result}}に変更 - LLM_総務:コンテキストを
{{知識検索_総務 result}}に変更
- LLM_情シス:コンテキストを
3. LLMノード(そのほか)の設定
- 質問分類器の「そのほか」ラベルから「LLM」ノードを追加します。
- ノード名を「LLM_そのほか」に変更します。
- モデル:
gemini-2.5-flash-lite - システムプロンプト(SYSTEM):
好意的に受け答えしつつ、社内ルールに関する問い合わせ以外には答えられない旨を簡潔に説明。 - ユーザープロンプト(USER):
{{sys.query}}
5. 回答ノード
- 各LLMノードの右にある「+」をクリックして、「回答」ノードを追加します(すべてのルートを一つの回答ノードに集約します)。
- 回答の内容に、以下の4つの変数を配置します。
{{LLM_総務 text}} {{LLM_情シス text}} {{LLM_人事 text}} {{LLM_そのほか text}}
手順④:保存する
画面右上の「公開する」→「更新を公開」をクリックします。変更が保存されます。
Warning
Dify では、上記の保存作業を行うと、保存とともに公開設定がされ、
環境によっては Dify にログインしていないユーザーでもアプリにアクセス可能 になります。
限定したい場合は、左上のアプリ名をクリックし、Web App とバックエンドサービス APIをオフにしてください。
※ 公開可否や利用範囲については、事前に管理者へ確認してください。
4. 動作確認
画面右上のテスト実行をクリックし、以下の4つの質問を入力して、意図した部署から回答が行われるか確認してください。
入力例①:人事(在宅勤務)
入力
在宅勤務を週3日にしたいのですが、申請は必要ですか?
模範出力(ポイント解説)
- 想定分類: 人事
- 回答の要点: 原則週2日までの制限や、上長への相談・申請が必要である旨が回答される。
入力例②:情シス(VPNトラブル)
入力
VPNがつながりません。エラーが出ていて仕事ができないです。
模範出力(ポイント解説)
- 想定分類: 情シス
- 回答の要点: ネット接続の確認、PC再起動、VPNクライアントの更新などのトラブルシューティングが提示される。
入力例③:総務(備品)
入力
マウスを購入したいのですが、勝手に買ってもいいですか?
模範出力(ポイント解説)
- 想定分類: 総務
- 回答の要点: 原則として事前申請が必要であること、申請フォームの場所などが案内される。
Appendix
ここで「理由は動かしても反応しないから」と追加で質問してみましょう。すると、これまでの質問内容も加味してPCやマウスの故障の話だと解釈し、情シスの分岐で処理がされ対応方法を情シスのナレッジを使って回答します。
入力例④:そのほか(無関係な話題)
入力
こんにちは!今日のおすすめのランチを教えて。
模範出力(ポイント解説)
- 想定分類: そのほか
- 回答の要点: 社内ルール以外の質問には答えられない旨が丁寧に回答される。