カスタマーサポートエージェントの設計
「テキスト分類ができるようになった。これをカスタマーサポートのAIエージェントに仕上げよう。」
田中VPoEが問い合わせフローを見せる。
「問い合わせを自動分類し、回答を生成し、必要に応じてエスカレーションする。月5,000件の問い合わせを効率化するエージェントを設計しよう。」
エージェントの要件
| 機能 | 入力 | 出力 |
|---|---|---|
| 問い合わせ分類 | テキスト | カテゴリ + 確信度 |
| 回答生成 | カテゴリ + テキスト | 回答ドラフト |
| エスカレーション判断 | 確信度 + 感情 | エスカレーション先 |
| FAQ検索 | テキスト | 関連FAQ |
| 対話要約 | 対話履歴 | 要約テキスト |
ツール設計
tools = {
"classify_inquiry": {
"description": "問い合わせのカテゴリを分類する",
"input": "text: str",
"output": "dict (category, confidence, sub_category)",
},
"search_faq": {
"description": "関連するFAQを検索する",
"input": "query: str, category: str",
"output": "list[dict] (question, answer, relevance_score)",
},
"generate_response": {
"description": "問い合わせへの回答ドラフトを生成する",
"input": "inquiry: str, category: str, faq_context: str",
"output": "str (回答テキスト)",
},
"analyze_sentiment": {
"description": "感情分析を行う",
"input": "text: str",
"output": "dict (sentiment, urgency, frustration_level)",
},
"check_escalation": {
"description": "エスカレーションの必要性を判断する",
"input": "confidence: float, sentiment: dict, category: str",
"output": "dict (needs_escalation, reason, escalation_to)",
},
}
State設計
from typing import TypedDict, Optional, Annotated
from operator import add
class SupportAgentState(TypedDict):
messages: Annotated[list, add]
inquiry_text: str
category: Optional[str]
confidence: Optional[float]
sentiment: Optional[dict]
faq_results: Optional[list]
draft_response: Optional[str]
needs_escalation: bool
escalation_reason: Optional[str]
error: Optional[str]
ワークフロー設計
問い合わせ受信
↓
[分類] → カテゴリ + 確信度
↓
[感情分析] → 感情 + 緊急度
↓
[エスカレーション判断]
↓
┌─── Yes ──┐ ┌─── No ──┐
│エスカレ │ │FAQ検索 │
│ーション │ │ ↓ │
│通知 │ │回答生成 │
└──────────┘ └─────────┘
↓ ↓
[応答]
まとめ
| 項目 | ポイント |
|---|---|
| 5つのツール | 分類/FAQ検索/回答生成/感情分析/エスカレーション |
| State | 分類結果、感情、エスカレーション判断を管理 |
| ワークフロー | 分類→感情→エスカレーション判断→回答生成の流れ |
| エスカレーション | 確信度・感情・カテゴリの3要素で判断 |
チェックリスト
- サポートエージェントの要件を定義できる
- 必要なツールを設計できる
- State構造とワークフローを設計できる
- エスカレーション条件を定義できる
次のステップへ
エージェントの設計ができた。次は分類ツールの実装を学ぼう。
推定読了時間: 30分