cs-chatbot-design について
チャットボットの設計を支援し、インテント分類、スロット抽出、対話管理、応答生成を扱うスキルです。対話パターンや評価指標に加え、フォールバックと人間への引き継ぎも整理します。
主な機能
- 01インテント分類とスロット抽出の計画
- 02対話管理フローの設計
- 03単一・複数ターン対話の構築
- 04応答設計原則の策定
- 05インテントと解決指標の追跡
活用シーン
- 01予約情報を集める対話の設計
- 02注文管理インテントの計画
- 03人間への引き継ぎフローの作成
- 04チャットボット対話の評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ asgard-ai-platform/ skills --skill cs-chatbot-designインストール後、Claude Code で/cs-chatbot-designを入力して読み込まれたか確認します。
同梱ファイルexamples/sample_scenario.mdreferences/nlu-training.md
詳細
チャットボットの設計
フレームワーク
IRON LAW: Intent First, Response Second
A chatbot must UNDERSTAND what the user wants (intent) before crafting
a response. Building response templates without intent classification
produces a keyword-matching FAQ, not a chatbot.
Flow: User message → Intent classification → Slot extraction → Response
コア NLU パイプライン
| ステージ | 内容 | 例 |
|---|---|---|
| インテント分類 | ユーザーが何をしたいのかを特定します | 「何時に閉店しますか?」→ インテント:check_hours |
| エンティティ/スロット抽出 | メッセージから重要な情報を抽出します | 「金曜日に4人でテーブルを予約して」→ スロット:{party_size: 4, date: Friday} |
| 対話管理 | 次のアクション(不足情報の確認、確認、実行)を決定します | スロット time が不足 → 「何時をご希望ですか?」と尋ねます |
| 応答生成 | 返信を作成します | 「金曜日の午後7時に4人でテーブルを予約しました。それでは当日お待ちしています!」 |
インテントの設計
- ユーザーからの問い合わせの80%をカバーする10~15個の主要なインテントから始めます
- 各インテントには10~20個のトレーニング例(さまざまな言い回し)が必要です
- 認識できない入力に対応する
fallbackインテントを含めます - 関連するインテントをグループ化します。「注文管理」の下に
order_status、order_cancel、order_modifyをまとめます
対話フローのパターン
| パターン | 使用する場面 | 例 |
|---|---|---|
| 単一ターン | コンテキストを必要としない簡単なQ&A | 「営業時間は何時ですか?」→ すぐに回答 |
| 複数ターン(スロットフィリング) | 複数の情報が必要な場合 | 「テーブルを予約して」→ 人数を尋ねる → 日付を尋ねる → 時刻を尋ねる → 確認 |
| 分岐 | ユーザーの回答に応じて異なる経路を進む場合 | 「アカウントをお持ちですか?」→ はい:ログインフロー/いいえ:登録フロー |
| 確認 | アクションを実行する前 | 「注文 #12345 をキャンセルします。よろしいですか?」 |
| 引き継ぎ | ボットでリクエストに対応できない場合 | 「担当者におつなぎします」 |
応答設計の原則
- まず受け止める:「承知しました。注文状況を確認したいのですね。」
- 簡潔にする:質問に答えたら、そこで止めます。不要な情報を付け加えないでください。
- 次のステップを提案する:「ほかにお手伝いできることはありますか?」と尋ねたり、関連するアクションを提案したりします。
- クイック返信/ボタンを使う:入力の手間を減らし、会話を誘導します。
- 個性を持たせる:一貫したトーン(親しみやすい、プロフェッショナル、カジュアルなど)を決め、それを守ります。
指標
| 指標 | 定義 | 目標 |
|---|---|---|
| インテント精度 | 正しく分類されたインテントの割合 | > 85% |
| 自己解決率 | 人への引き継ぎなしで解決した割合 | > 60-70% |
| CSAT | 顧客満足度スコア | > 4.0/5 |
| フォールバック率 | フォールバック/不明なインテントが発生した割合 | < 15% |
| 解決時間 | 解決までにかかる平均時間 | < 2 minutes |
出力形式
# Chatbot Design: {Use Case}
## Intent Catalog
| Intent | Description | Example Utterances | Priority |
|--------|-----------|-------------------|---------|
| {intent} | {what it means} | "{example 1}", "{example 2}" | H/M/L |
## Dialogue Flows
### {Flow Name}
1. User: {trigger utterance}
2. Bot: {response + slot question if needed}
3. User: {provides info}
4. Bot: {confirmation or action}
## Fallback Strategy
- After 1 miss: rephrase + suggest options
- After 2 misses: offer human handoff
## Metrics Targets
| Metric | Target |
|--------|--------|
| Intent accuracy | > {X%} |
| Containment | > {X%} |
注意点
- ユーザーはフローどおりに進みません:予想外の言い回しを入力したり、会話の途中で話題を変えたり、情報を不完全なまま伝えたりします。理想的な経路だけでなく、さまざまな状況に対応できるよう設計してください。
- フォールバックは最も重要なインテントです:「すみません、理解できませんでした。X、Y、Zのどれを意味していますか?」のような適切なフォールバックは、誤った推測よりも優れています。
- LLM を活用したボットにもガードレールが必要です:応答生成に GPT/Claude を使っていますか?最初のレイヤーとしてインテント分類を追加し、経路を振り分けて制約することで、ハルシネーションや話題から外れた応答を防ぎます。
- チームメンバーではなく実際のユーザーでテストします:チームはボットの仕組みを知っており、「正しい」言い回しで質問しますが、実際のユーザーはそうとは限りません。リリース前に10人以上の実際のユーザーでテストしてください。
- 会話ログは貴重な情報源です:毎週、会話ログを確認してください。うまくいかなかった会話から、不足しているインテント、分かりにくいフロー、トレーニングデータの不足が見つかります。
参考資料
- NLU トレーニングデータのベストプラクティスについては、
references/nlu-training.mdを参照してください - LINE/Messenger プラットフォームとの連携については、ecom-conversational スキルを参照してください
コメント
Markdown 対応