mcpField
C
chatbot-conversation-design

chatbot-conversation-design

github.com/seb1nデザイン・UI232149 回インストール11 週間前に更新
リポジトリ

chatbot-conversation-design について

chatbot-conversation-design は、チャットボットの対話フローを設計・評価する開発者、UXライター、プロダクトマネージャー向けのスキルです。インテント設計、状態管理、曖昧さへの対応、フォールバック、反復テストを扱います。

主な機能

  1. 01ペルソナと範囲の定義
  2. 02インテントとユーザージャーニーの設計
  3. 03スロット収集と曖昧さの解消
  4. 04フォールバックとエスカレーション設計
  5. 05コンテキストと対話状態の管理
  6. 06プロトタイプのテストと反復

活用シーン

  1. 01新しいチャットボットの対話設計
  2. 02既存の対話フローの監査
  3. 03曖昧な依頼からの復旧設計
  4. 04複数ターンでの話題切り替えへの対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/seb1n/awesome-ai-agent-skills --skill chatbot-conversation-design

インストール後、Claude Code で/chatbot-conversation-designを入力して読み込まれたか確認します。

詳細

チャットボットの会話設計

このスキルでは、自然なやり取りを実現し、曖昧さに適切に対処し、ユーザーを望ましい結果へ導くチャットボットの会話を設計するための包括的なフレームワークを提供します。ペルソナの定義やインテントのマッピングから、ダイアログの状態管理、エラーからの復旧、反復的なテストまで、設計ライフサイクル全体を網羅しています。一貫性のある親しみやすいトーンを保ちながら、予期しない入力にも対応できる、堅牢な会話を構築することに重点を置いています。

ワークフロー

  1. ボットのペルソナと対象範囲を定義します。 ボットの性格的な特徴(親しみやすい、プロフェッショナル、簡潔、機知に富んでいるなど)とガードレールを定めます。ボットにできることとできないことを定義します。5つのタスクに優れた、対象範囲が明確なボットは、50のタスクに手を出す曖昧なボットよりも優れています。語彙の好み、絵文字の使用ルール、応答の長さの目安、エスカレーションの条件を含むスタイルガイドに、ペルソナを記録します。

  2. インテント、エンティティ、ユーザージャーニーをマッピングします。 ボットが対応する必要のあるすべてのインテントを特定します。主要なタスクのインテント(例:order.place、account.reset_password)とメタインテント(例:help、cancel、speak_to_human)の両方を含めます。各インテントについて、ボットが収集する必要のあるエンティティ(スロット)を列挙します。会話フローを、有効な経路、分岐点、終了条件を示す有向グラフとしてマッピングします。すべての経路が、解決または円滑な引き継ぎのいずれかで終了するようにします。

  3. スロット収集と曖昧さ解消のダイアログを設計します。 各インテントについて、スロット収集の手順を定義します。必要なエンティティと任意のエンティティ、そしてボットがそれらを尋ねる順序を決めます。ユーザーの入力が曖昧な場合(例:複数の商品が該当する状況で「大きいほう」と言われた場合)は、ユーザーを圧倒しないよう、明確な選択肢を提示して曖昧さを解消するプロンプトを設計します。支払いやキャンセルなど、影響の大きい操作では確認プロンプトを使用します。

  4. エラーからの復旧とフォールバックのフローを構築します。 フォールバックを3段階で設計します。(1)信頼度が低い場合に質問を言い換える、(2)2回試してもインテントが不明な場合に選択肢を限定して提示する、(3)ボットが復旧できない場合に人間のエージェントへエスカレーションする、という段階です。会話が行き詰まらないようにします。すべてのエラー状態に、復旧経路と、会話を再開または円滑に終了する方法を用意します。

  5. コンテキストの引き継ぎと状態管理を実装します。 ダイアログの状態をターンをまたいでどのように保持するかを定義します。引き継ぐスロット(例:ユーザーの名前はセッション中保持する)と、タスク間でリセットするスロットを指定します。会話の途中で話題が切り替わった場合(「そういえば、その前に残高を確認してもらえますか?」など)にも対応し、その後に元のフローへ戻れるよう、コンテキストスタックを設計します。

  6. プロトタイプを作成し、テストして、改善を繰り返します。 会話スクリプトやBotmock、Voiceflow、Dialogflow CXなどのツールを使用して、低忠実度のプロトタイプを作成します。実際のユーザーでテストし、会話が破綻する箇所を特定します。タスク完了率、解決までの平均ターン数、フォールバックの発生率、エスカレーション率などの指標を追跡します。まず最も問題のあるフローから改善します。

使用方法

このスキルは、会話型インターフェースを設計する開発者、UXライター、プロダクトマネージャーを対象としています。ボットの目的、対象となるユーザー層、対応すべきタスクの一覧をエージェントに提供してください。

  • 新しいチャットボットの場合: ワークフローに最初から最後まで従い、会話アーキテクチャ全体を構築します。
  • 既存のチャットボットの場合: このスキルを使用して会話フローを監査し、行き詰まる箇所を特定して、エラー処理を改善します。

プロンプトの形式:

Design a chatbot conversation for [use case].
Bot persona: [personality traits]
Supported tasks: [list of tasks]
Platform: [web widget / Slack / WhatsApp / voice assistant]

例

例 1:カスタマーサポートボット — 完全な会話フロー

設計仕様:

{
  "bot_name": "HelpBot",
  "persona": "Friendly, efficient, empathetic",
  "intent": "order.track",
  "required_entities": [
    { "name": "order_id", "type": "string", "prompt": "What's your order number?" },
    { "name": "email", "type": "email", "prompt": "What email did you use for the order?" }
  ],
  "optional_entities": [
    { "name": "issue_type", "type": "enum", "values": ["delayed", "damaged", "wrong_item", "other"] }
  ]
}

会話フロー:

User: Where's my order?

HelpBot: I'd be happy to look that up for you! Could you share your order number?
         It usually starts with "ORD-" and is in your confirmation email.

User: ORD-29481

HelpBot: Got it. And what email address did you place the order with?

User: [email protected]

HelpBot: Thanks, Marcus. I found your order — here's the latest status:

         Order: ORD-29481
         Status: In transit
         Carrier: FedEx
         Tracking: 7749 2381 0042
         Estimated delivery: Thursday, March 6

         Is there anything else about this order I can help with?

User: It was supposed to arrive yesterday.

HelpBot: I'm sorry about the delay. It looks like there was a weather-related
         shipping disruption. Based on the latest tracking update, it should
         arrive by end of day Thursday.

         Would you like me to:
         1. Send you tracking updates via email
         2. Connect you with our shipping team
         3. Something else

User: Option 1 please.

HelpBot: Done! You'll receive email updates at [email protected] whenever the
         tracking status changes. Is there anything else I can help with?
例 2:エラー処理とフォールバックフロー

シナリオ: ボットが分類できない入力を受け取ります。

User: asdfghjkl

HelpBot: I didn't quite catch that. Could you rephrase what you're looking for?
         I can help with things like:
         - Tracking an order
         - Returns and refunds
         - Account questions

User: I want to do the thing with the stuff

HelpBot: I want to make sure I help you with the right thing. Which of these
         is closest to what you need?
         1. Track an existing order
         2. Start a return or refund
         3. Update your account info
         4. Something else

User: 4

HelpBot: No problem — let me connect you with a team member who can help.
         You'll be transferred to a live agent shortly. Your reference
         number is #SUP-8842 so you won't have to repeat anything.

         [Escalating to human agent...]

状態管理に関するメモ: 分類に 2 回失敗した後(信頼度 < 0.3)、ボットは自由形式のプロンプトから、選択肢を限定したリストに切り替わります。3 回目の失敗、または「その他」を明示的に選択した場合は、引き継ぎ用ペイロードにすべてのコンテキストを含めて、エスカレーションします。

ベストプラクティス

  • うまくいかない場合のフローから設計します。 会話の多くは理想的なフローから外れます。構築が簡単な通常のフローよりも、エラーからの復旧やエッジケースに時間をかけましょう。
  • ボットの発話は 3 文以内にします。 ボットの応答が長いと、ユーザーは流し読みしたり、会話から離れたりします。複雑な情報は複数回のやり取りに分けるか、リストやカードなどの構造化された形式を使いましょう。
  • 取り消せない操作を実行する前に確認します。 キャンセル、支払い、データ削除などの操作の前には、必ず確認ステップを設けます。何が起きるのかをユーザーに正確に示しましょう。
  • 段階的に情報を開示します。 すべての選択肢を最初から提示しないでください。よく使われる経路から始め、必要な場合にのみ「その他の選択肢」を提示しましょう。
  • ターンをまたいで自然にコンテキストを引き継ぎます。 ユーザーが「大きいサイズがいいです」と言った場合、ボットは前のターンでピザについて話していたことを覚えておくべきです。ユーザーに繰り返しを求めるより、「大きいサイズのピザですね?」と明示的に確認するほうが適切です。
  • どのステップにも中断手段を用意します。 ユーザーがいつでも「キャンセル」「最初からやり直す」「人間と話す」と伝え、すぐに役立つ応答を得られるようにしましょう。

エッジケース

  • 複数のインテントを含む入力。 ユーザーが「注文を追跡して、返品も開始してください」と言った場合、ボットは両方のインテントを認識し、順番に対応して、タスクを切り替える際に確認するべきです。
  • フローの途中での話題の切り替え。 ユーザーが会話の途中で話題を変えた場合、現在のダイアログ状態をスタックに積み、新しいインテントに対応します。割り込みが解決したら、前のタスクに戻るかどうかを尋ねましょう。
  • 矛盾する情報。 ユーザーが同じセッション内で異なるメールアドレスを入力するなど、矛盾する詳細を伝えた場合は、その不一致を示して確認を求めます。黙って最新の値を使ってはいけません。
  • デリケートな内容や感情的な内容。 ユーザーが不満、怒り、苦痛を表明した場合は、解決策に進む前に「それはお困りですよね」のように、その感情を受け止めるべきです。明らかに動揺しているユーザーに、決まり文句のように明るく返答してはいけません。
  • プラットフォーム固有の制約。 WhatsApp では、ウェブウィジェットとは異なる方法でメッセージの長さやボタンの選択肢が制限されています。画一的なフローを押しつけるのではなく、プラットフォームの機能に合わせて会話を設計しましょう。

コメント