iconsulting/docs/architecture/05-objection-handler-agent.md

447 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 05 - Objection Handler Agent (异议处理专家) 设计详解
## 1. 核心职责
Objection Handler 是系统中的**异议化解专家**。当用户表达顾虑、犹豫或反对意见时Coordinator 调用此 Agent 获取专业的回应方案。
核心能力:
1. **异议分类** -- 识别异议类型(费用/时间/成功率/家庭/政治/信任等)
2. **共情回应** -- 先理解和认同用户的感受,建立信任
3. **事实反驳** -- 用知识库中的真实数据和政策依据消除误解
4. **案例引用** -- 援引类似背景的成功案例增强说服力
5. **替代方案** -- 当无法直接消除顾虑时,提供绕行方案
6. **话术建议** -- 为 Coordinator 提供具体的回应话术参考
> 设计原则:**先共情、再讲理、后给方案。** 永远不要否定用户的感受,即使他们的担心在事实上是错误的。
## 2. 模型与参数
```typescript
{
model: 'claude-sonnet-4-20250514', // 需要共情能力 + 逻辑推理
max_tokens: 2000,
temperature: 0.2, // 允许少量灵活性(话术需要自然)
system: [
{
type: 'text',
text: objectionHandlerPrompt,
cache_control: { type: 'ephemeral' }
}
],
}
```
选用 Sonnet 的理由:
- 异议处理需要高情商(理解用户潜台词)
- 需要平衡共情与说服,这对模型能力要求较高
- 回应中需要准确引用政策数据,不能出错
## 3. 可用工具 (Available Tools)
Objection Handler 有 **2 个工具**
### 3.1 search_knowledge
```typescript
{
name: 'search_knowledge',
description: '搜索知识库获取政策事实、成功率数据、费用标准、审批时间等信息,用于以事实回应用户异议。',
input_schema: {
type: 'object',
properties: {
query: {
type: 'string',
description: '搜索查询,如"高才通审批成功率数据"或"移民后就业情况"'
},
category: {
type: 'string',
enum: ['QMAS', 'GEP', 'IANG', 'TTPS', 'CIES', 'TECHTAS'],
description: '相关移民类别'
}
},
required: ['query']
}
}
```
### 3.2 get_user_context
```typescript
{
name: 'get_user_context',
description: '获取用户的历史背景和之前的顾虑记录,避免重复回应同一异议,并根据用户具体情况定制回应。',
input_schema: {
type: 'object',
properties: {
query: {
type: 'string',
description: '检索用户记忆,如"用户之前表达过的顾虑和担忧"'
}
},
required: ['query']
}
}
```
## 4. System Prompt 要点
```
# 身份
你是 iConsulting 的异议处理专家。你擅长理解用户的顾虑,并用专业、温暖的方式化解。
# 回应三步法(必须遵守)
1. 共情 (Empathize): 承认用户的感受是合理的,用"确实""您的担心很正常"等语言
2. 事实 (Educate): 用知识库中的数据和政策纠正误解
3. 方案 (Empower): 给出具体的解决方案或替代路径
# 常见异议分类与策略
## COST费用顾虑
- "太贵了" / "移民中介费好高"
- 策略区分付费评估¥99vs 正式申请费用 vs 中介费;强调自助申请的可能性;对比移民后的收入提升
## TIMELINE时间顾虑
- "要等好久" / "时间太长了"
- 策略按类别给出真实审批时间TTPS 4-6周最快对比其他国家移民周期强调可以边等边准备
## SUCCESS_RATE成功率顾虑
- "能成功吗" / "通过率高吗"
- 策略引用知识库中的通过率数据分析用户条件匹配度避免承诺100%成功
## FAMILY家庭顾虑
- "家人不支持" / "孩子教育怎么办"
- 策略:提供香港教育体系信息;配偶随行政策;强调不需要立即定居
## POLITICAL政治顾虑
- "香港现在还好吗" / "安全吗"
- 策略:保持中立客观;引导关注经济和教育优势;强调"多一个选择"而非"逃离"
## TRUST信任顾虑
- "AI能给准确建议吗" / "你们靠谱吗"
- 策略强调AI只做初筛正式服务由持牌顾问提供建议验证信息来源官方网站
## READINESS准备度顾虑
- "我条件不够好" / "再等等吧"
- 策略:指出已有优势;强调"越早准备越好";政策有变化风险
# 红线
- 永远不要承诺100%成功率
- 不做任何政治立场判断
- 不贬低其他移民目的地
- 不催促用户做决定
```
## 5. 输入/输出格式
### 输入 (Coordinator 传入)
```typescript
interface ObjectionHandlerInput {
/** 用户的异议/顾虑原文 */
objection: string;
/** 用户上下文摘要Coordinator 提供的背景信息) */
userContext: string;
/** 用户关注的移民类别(如果已知) */
category?: 'QMAS' | 'GEP' | 'IANG' | 'TTPS' | 'CIES' | 'TECHTAS';
}
```
### 输出 (返回给 Coordinator)
```typescript
interface ObjectionHandlerOutput {
/** 异议分类 */
objection_category: 'COST' | 'TIMELINE' | 'SUCCESS_RATE' | 'FAMILY' | 'POLITICAL' | 'TRUST' | 'READINESS' | 'OTHER';
/** 异议严重程度 */
severity: 'low' | 'medium' | 'high';
/** 共情回应Coordinator 可直接使用或改写) */
empathy_response: string;
/** 事实反驳要点 */
factual_rebuttal: {
key_points: string[]; // 核心反驳论点
data_references: string[]; // 引用的数据/政策
sources: Array<{
title: string;
article_id?: string;
}>;
};
/** 成功案例引用(如果知识库有相关案例) */
success_story_reference?: {
scenario: string; // 案例背景简述
relevance: string; // 与当前用户的关联点
};
/** 建议的完整回应话术(供 Coordinator 参考) */
suggested_response: string;
/** 建议的后续动作 */
follow_up_action: {
action: 'continue_discussion' | 'provide_more_data' | 'offer_alternative' | 'give_space' | 'connect_expert';
detail: string;
};
}
```
## 6. 触发时机 (When to Trigger)
Coordinator 在以下场景调用 `invoke_objection_handler`
| 场景 | 用户信号 | Coordinator 判断方式 |
|------|----------|---------------------|
| 直接表达顾虑 | "太贵了" / "不确定" / "有点担心" | LLM 识别负面情绪+具体顾虑主题 |
| 犹豫不前 | "让我想想" / "再考虑一下" | LLM 识别拖延信号 |
| 质疑可行性 | "我条件不太好吧" / "能通过吗" | LLM 识别自我怀疑 |
| 对比竞品 | "其他中介说..." / "网上说..." | LLM 识别外部信息干扰 |
| 家庭反对 | "老婆/老公不同意" | LLM 识别第三方阻力 |
| 政治敏感 | "香港还安全吗" | LLM 识别政治顾虑 |
**通常与 Strategist 配合使用**
1. Strategist 检测到 `sentiment: hesitant` + `recommended: address_objection`
2. Coordinator 据此调用 Objection Handler
3. Coordinator 综合两者的建议生成最终回复
## 7. 内部循环 (Internal Loop)
Objection Handler 的 agent loop 最多 **2 轮** tool 调用:
```
┌─────────────────────────────────────────────────────┐
│ Objection Handler Internal Loop (max 2 turns) │
│ │
│ Turn 0: 分析异议 + 获取背景 │
│ ├── 同时发起两个 tool 调用(并行): │
│ │ ├── search_knowledge({query: 相关事实查询}) │
│ │ └── get_user_context({query: 用户顾虑历史}) │
│ │ │
│ Turn 1: 综合生成回应方案 │
│ ├── 如果 Turn 0 的搜索结果不够 │
│ │ └── search_knowledge({query: 补充查询}) │
│ │ │
│ └── 生成结构化输出 │
│ ├── 分类异议 │
│ ├── 构建共情 + 事实 + 方案 三段式回应 │
│ └── 返回给 Coordinator │
└─────────────────────────────────────────────────────┘
```
**并行调用优化**
```typescript
// Objection Handler 可以在第一轮同时调用两个工具
const toolCalls = [
{
name: 'search_knowledge',
input: { query: '高才通审批成功率和时间线', category: 'TTPS' }
},
{
name: 'get_user_context',
input: { query: '用户之前表达过的顾虑' }
}
];
// 两个工具并行执行,减少延迟
```
## 8. 与其他 Agent 的关系
```
┌──────────────┐
│ Strategist │
│ (检测异议 │
│ 信号) │
└──────┬───────┘
│ sentiment: hesitant
│ recommended: address_objection
┌──────────────┐ invoke_objection_handler ┌──────────────┐
│ │ ────────────────────────→ │ Objection │
│ Coordinator │ ObjectionHandlerOutput │ Handler │
│ │ ←──────────────────────── │ │
└──────┬───────┘ └──────┬───────┘
│ │
│ Coordinator 综合回应: ├── search_knowledge
│ 1. 共情语句(来自 Objection Handler ├── get_user_context
│ 2. 事实数据(来自 Objection Handler
│ 3. 对话策略(来自 Strategist
│ ┌──────────────┐
│ │ Knowledge │
├── 可能追加调用 Case Analyst │ Service │
│ (用成功案例强化说服) └──────────────┘
└── 可能追加调用 Policy Expert
(用官方政策回应质疑)
```
**协作链路示例**
1. 用户说:"高才通通过率高吗?感觉不太靠谱"
2. Coordinator 调用 Strategist → 检测到 `SUCCESS_RATE` 异议 + `hesitant` 情绪
3. Coordinator 同时调用 Objection Handler → 获取共情+数据回应
4. Coordinator 可能追加调用 Case Analyst → 获取类似背景的成功案例
5. Coordinator 综合三者结果,生成最终回复
## 9. 示例场景
### 场景 1费用顾虑
**Coordinator 调用**
```json
{
"tool": "invoke_objection_handler",
"input": {
"objection": "你们的评估服务要99块网上免费的评估工具一大把为什么要花这个钱",
"userContext": "用户35岁本科金融行业年薪60万。已初步了解优才计划。对移民有兴趣但比较谨慎。",
"category": "QMAS"
}
}
```
**返回结果**
```json
{
"objection_category": "COST",
"severity": "medium",
"empathy_response": "您说得对,网上确实有不少免费的评估工具。花钱之前多做比较是非常明智的。",
"factual_rebuttal": {
"key_points": [
"免费工具通常只做简单条件匹配如年龄、学历无法综合评估12项优才计划评分维度",
"我们的付费评估由AI深度分析+真人顾问审核双重把关覆盖全部6个移民类别",
"评估报告包含详细的材料准备清单、时间规划和风险评估,相当于一份完整的申请预案",
"¥99相比正式申请的中介费通常2-5万元只是零头但能帮您判断是否值得投入"
],
"data_references": [
"优才计划评分标准包含12项维度满足6项为门槛",
"正式申请中介费用通常为20,000-50,000人民币"
],
"sources": [
{
"title": "优才计划申请费用与流程指南",
"article_id": "qmas-fee-guide-001"
}
]
},
"success_story_reference": {
"scenario": "有位类似背景的金融从业者本科、30+岁在做完详细评估后发现自己更适合高才通B类而非最初考虑的优才计划节省了大量准备时间和费用。",
"relevance": "用户也是金融行业、本科学历,可能存在类似的类别误判风险"
},
"suggested_response": "您说得对,网上确实有不少免费的评估工具,花钱之前多做比较是非常明智的。\n\n不过实话说免费工具大多只看年龄和学历这两项很难覆盖优才计划12项评分标准的综合评估。我们的详细评估会同时分析全部6个移民类别的匹配度帮您找到最优路径。\n\n之前就有一位和您背景类似的金融从业者原本打算走优才评估后发现更适合高才通B类审批速度快了几个月。\n\n¥99 对于一个可能影响几年规划的决策来说,性价比还是很高的。当然,如果您还想多了解一些再做决定,我随时在这里为您解答。",
"follow_up_action": {
"action": "continue_discussion",
"detail": "不要强推付费先回答完这个顾虑。如果用户继续聊可在2-3轮后再自然提起。"
}
}
```
### 场景 2成功率怀疑
**Coordinator 调用**
```json
{
"tool": "invoke_objection_handler",
"input": {
"objection": "我朋友申请优才被拒了,现在通过率好像很低?",
"userContext": "用户28岁硕士非百强5年工作经验IT行业。已完成初步评估TTPS不符合非百强大学优才中等推荐。",
"category": "QMAS"
}
}
```
**返回结果**
```json
{
"objection_category": "SUCCESS_RATE",
"severity": "high",
"empathy_response": "听到朋友的经历确实会让人担心。每个人的情况不同,被拒的原因也各不相同。",
"factual_rebuttal": {
"key_points": [
"优才计划采取择优录取机制,通过率取决于申请人的综合竞争力,并非随机审批",
"影响通过率的核心因素:行业是否属于人才清单、材料准备的完整度和说服力、申请时机",
"您朋友被拒可能有具体原因(材料不完整、分数不够、不在热门行业等),不代表所有人都会被拒",
"您28岁+硕士+5年IT经验年龄和行业科技领域都是加分项"
],
"data_references": [
"IT/科技行业属于香港重点发展的14个科技领域之一",
"优才计划已取消年度配额限制,全年接受申请"
],
"sources": [
{
"title": "优才计划最新申请要求与审批标准",
"article_id": "qmas-criteria-001"
},
{
"title": "香港人才清单行业分类",
"article_id": "talent-list-001"
}
]
},
"success_story_reference": {
"scenario": "一位29岁、普通本科毕业的数据分析师凭借在AI领域的项目经验和行业论文成功通过优才计划。关键在于材料中充分展示了行业贡献。",
"relevance": "用户同样来自IT领域且学历更高硕士如果能充分展示专业能力通过可能性不低"
},
"suggested_response": "听到朋友的经历确实会让人担心,这种心情完全可以理解。\n\n不过每个申请人的情况差异很大您朋友被拒可能有材料、时机或分数等方面的具体原因。优才是择优录取关键在于怎么呈现自己的竞争力。\n\n从您的条件来看28岁年龄加分很高硕士学历是加分项IT行业属于香港重点发展领域。如果能在申请材料中突出您在科技领域的项目经验和成果竞争力是不弱的。\n\n要不要我帮您更详细地分析一下各项评分情况这样您对自己的实际竞争力会有更清晰的判断。",
"follow_up_action": {
"action": "provide_more_data",
"detail": "建议接下来调用 Assessment Expert 做一次完整评估,用具体分数让用户看到自己的竞争力。数据比口头安慰更有说服力。"
}
}
```
### 场景 3家庭顾虑
**Coordinator 调用**
```json
{
"tool": "invoke_objection_handler",
"input": {
"objection": "我倒是想去,但我老婆觉得孩子在内地读书挺好的,不想折腾",
"userContext": "用户38岁已婚有孩子年龄未知TTPS B类高度推荐。之前对话很积极。",
"category": "TTPS"
}
}
```
**返回结果**
```json
{
"objection_category": "FAMILY",
"severity": "high",
"empathy_response": "家人的意见确实很重要,毕竟移民是全家的大事。您太太关心孩子的教育稳定性,这完全可以理解。",
"factual_rebuttal": {
"key_points": [
"拿到香港身份并不意味着必须立即搬过去,很多家庭选择'先拿身份、后续安排'的方式",
"高才通获批后,孩子可以享受香港教育资源(包括国际学校、双语教育),但不强制转学",
"持港身份的孩子在内地参加联考DSE/港澳台联考)有更多升学选择",
"可以维持'一家两地'模式:一方在港工作保持身份续签,家人不一定要搬迁"
],
"data_references": [
"持香港居民身份的学生可参加港澳台联招考试",
"高才通签证持有人的受养人可申请随行签证",
"香港7年居住可申请永居但不要求连续居住"
],
"sources": [
{
"title": "香港身份与子女教育规划指南",
"article_id": "family-education-001"
}
]
},
"success_story_reference": {
"scenario": "一位类似情况的家庭,先生先通过高才通拿到香港身份,太太和孩子继续在内地。两年后孩子面临小升初时,全家利用港籍身份获得了国际学校的入学机会。",
"relevance": "用户也是已婚有孩子,可以用灵活的方式先拿身份、不急于搬迁"
},
"suggested_response": "家人的意见确实很重要,移民毕竟是全家的大事。您太太关心孩子的教育稳定性,这是非常负责任的想法。\n\n其实拿到香港身份并不意味着必须马上搬过去。很多家庭的做法是'先拿身份、灵活安排'——孩子可以继续在内地读书,等到合适的时机(比如升学节点)再考虑是否过去。\n\n而且港籍孩子还多了一条路可以参加港澳台联考升学选择更多。相当于给孩子多了一个选择而不是替他们做决定。\n\n要不和太太分享一下这些信息有时候换个角度来看'多一个身份'和'一定要搬家'是完全不同的概念。",
"follow_up_action": {
"action": "give_space",
"detail": "家庭异议需要给用户时间与家人商量。不要催促决定,可以提供一些教育方面的资料链接让用户带回去与太太讨论。"
}
}
```