🎧
概念 #Dify #カスタマーサポート #チャットフロー #エージェント #RAG #ユースケース 📚 Difyユースケース

カスタマーサポートボット(Dify実践)

製品FAQ・注文状況・返品対応を自律的に処理するカスタマーサポートボットをDify Chatflowで構築する実践例。

シナリオ概要

課題: ECサイトのカスタマーサポートに大量の問い合わせが来るが、多くが「注文状況確認」「返品方法」「製品の使い方」の3種類に集中している。

解決策: Dify Chatflow で意図分類 → 専門処理(RAG/API/Agent)にルーティングするボットを構築。人間が対応すべき複雑なケースは有人チャットへエスカレーション。

ユーザー: 「注文した商品がまだ届いていない」
  → 意図分類: 配送問い合わせ
  → 注文管理APIへ問い合わせ
  → 「ご注文 #12345 は現在配送中です。お届け予定は明日です。
      追跡番号: JP1234567890」

使用する Dify 機能

機能役割
ワークフロー vs チャットフローChatflow で文脈保持
エージェント機能動的な API 呼び出しと推論
ナレッジベース・RAGFAQ・製品マニュアル検索
変数システム会話変数でユーザー情報保持

ワークフロー設計

Chatflow 構成:

[Start]
  │ {{sys.query}}: ユーザー入力

[Question Classifier]
  │ 意図を分類
  ├── 注文・配送に関する質問 ──────────────────→ [注文フロー]
  ├── 製品の使い方・トラブルシューティング → [FAQ フロー]
  ├── 返品・交換の手続き ─────────────────→ [返品フロー]
  └── 複雑・感情的・クレーム ────────────→ [エスカレーションフロー]

[注文フロー]
  ├── [Parameter Extraction: 注文番号を抽出]
  │     {{order_id}}: 注文番号(なければ質問して取得)
  ├── [HTTP Request: 注文管理API]
  │     GET /api/orders/{{order_id}}
  │     {{order_info}}: 注文・配送情報
  └── [LLM: 自然言語で回答]

[FAQ フロー]
  ├── [Knowledge Retrieval: 製品マニュアルDB]
  │     {{faq_context}}: 関連FAQ
  └── [LLM: FAQ に基づいて回答]

[返品フロー]
  ├── [HTTP Request: 注文API で注文日を確認]
  ├── [Code: 返品期限(30日以内)を計算]
  └── [LLM: 返品可否と手順を案内]

[エスカレーションフロー]
  └── [Answer: 有人チャットへの転送メッセージ]

会話変数の活用

初回ターン:
  [LLM: ユーザー名を抽出] → [Variable Assigner]
    conversation.user_name = "田中さん"
    
  以降のターン:
    「${conversation.user_name}、お問い合わせありがとうございます」
    → 毎回名前を聞かなくて済む

注文情報を覚えておく:
  conversation.last_order_id = "12345"
  
  Turn 1: 「12345の注文はどうなってる?」
  Turn 2: 「返品したい」← 注文番号を再入力させない

Parameter Extraction ノード

自然言語から注文番号を抽出する設定。

ノード: Parameter Extraction
入力: {{sys.query}}

抽出パラメータ定義:
  - name: order_id
    type: string
    description: "注文番号(例: #12345, 注文12345, ORD-12345など)"
    required: false

  - name: product_name
    type: string
    description: "問い合わせしている製品名"
    required: false

出力:
  {{param_extraction.order_id}}: "12345"(見つかった場合)
  {{param_extraction.order_id}}: null(見つからない場合)

注文番号が見つからない場合の処理

[Conditional Branch]
  IF: {{param_extraction.order_id}} is not empty
    → [HTTP Request: 注文API]
  ELSE:
    → [Answer: "ご注文番号をお教えください(例: #12345)"]

→ 次のターンで番号が来たら会話変数に保存して継続

エスカレーション判断

Question Classifier で「クレーム・感情的・複雑」に分類されたら:

[Answer]
  「大変ご不便をおかけして申し訳ございません。
  担当オペレーターにおつなぎします。
  少しお待ちください。
  
  チャット引き継ぎ番号: {{sys.conversation_id}}
  (オペレーターにこの番号をお伝えください)」

→ 会話IDを使って有人チャットシステムと連携
→ 過去の会話ログもIDで参照可能

実装のポイント

1. 分類の精度を上げる

Question Classifier のプロンプトに具体例を含める:

「注文・配送」の例:
  - "荷物が届かない"
  - "到着はいつ?"
  - "#12345 の状況は"

「FAQ」の例:
  - "使い方がわからない"
  - "設定方法を教えて"
  
→ 例が多いほど分類精度が上がる

2. API エラーへの対処

[Conditional Branch]
  IF: {{http_order.status_code}} == 200
    → 正常処理
  ELIF: {{http_order.status_code}} == 404
    → [Answer: "その注文番号が見つかりませんでした。ご確認ください"]
  ELSE:
    → [Answer: "現在システムが混み合っています。しばらく後でお試しください"]

3. 応答時間の短縮

人間は返答が遅いとチャットから離脱する:

- ストリーミング出力を ON(Answer ノードの設定)
  → テキストが生成されながらリアルタイム表示

- 重い処理(API呼び出し)は並列化
  → 注文情報と配送状況を同時取得

- よくある質問はキャッシュ
  → Helicone のキャッシュ機能を活用

参考:他のユースケース

  1. 1. 💬RAGチャットボット構築(Dify実践)
  2. 2. 📄PDFドキュメント分析パイプライン(Dify実践)
  3. 3. 🎧カスタマーサポートボット(Dify実践)
  4. 4. コンテンツ一括生成(Dify実践)
  5. 5. 🔎コードレビュー自動化(Dify実践)
  6. 6. 🗂️構造化データ抽出ワークフロー(Dify実践)
  7. 7. 🕸️マルチエージェントオーケストレーション(Dify実践)
  8. 8. 📱SNSコンテンツ多チャンネル自動生成(Dify実践)
  9. 9. 🧾経費精算・領収書OCR処理(Dify実践)
  10. 10. 📝会議議事録・タスク自動抽出(Dify実践)
  11. 11. 👥HR採用・オンボーディング自動化(Dify実践)
  12. 12. 🏭製造業:作業マニュアルQAボット(Dify実践)
  13. 13. 🎓教育:クイズ・学習教材自動生成(Dify実践)
  14. 14. 🔬ディープリサーチワークフロー(Dify実践)
  15. 15. 💬Slack社内ナレッジボット(Dify実践)
  16. 16. 📡競合情報・ニュースモニタリング(Dify実践)
  17. 17. 📋営業提案書自動生成(Dify実践)
  18. 18. 🏥医療・ヘルスケア向けDify活用(患者FAQ・文書処理)
  19. 19. 🏦金融・保険向けDify活用(レポート分析・審査支援)
  20. 20. 🏠不動産向けDify活用(物件説明生成・顧客マッチング)
  21. 21. ⚖️法律・リーガルテック向けDify活用(契約書レビュー・法令検索)
  22. 22. 🍽️小売・飲食向けDify活用(メニュー生成・クレーム対応・在庫Q&A)
  23. 23. 🏛️行政・公共向けDify活用(市民FAQ・申請ガイド)

出典: Dify公式ドキュメント https://docs.dify.ai