AI 打电话时,是怎么决定"这句话该怎么说"的?聊聊电话机器人背后的认知系统

做 AI 外呼机器人,最容易被低估的一步,往往不是"识别用户说了什么",而是"AI 接下来该说什么、该怎么说"。这两件事听起来像同一件事,做起来完全是两条难度曲线。
从"一个大 prompt"开始,到它撑不住为止
早期版本的思路都差不多:一个 system prompt,把人设、话术、注意事项都写进去,剩下的交给大模型自由发挥。这套路在场景简单的时候确实好用——直到你开始往里加规则。
客户情绪激动了,要加一条"先安抚,别急着推销";客户耐心快耗尽了,要加一条"这轮只说一句话,别啰嗦";客户在追问之前答应过的事,要加一条"必须先解释清楚,不能顾左右而言他";客户被打断了,要加一条"根据打断时机决定要不要接着说"……每条规则单独看都合理,但堆在同一个 prompt 里,大模型经常会同时"看到"好几条互相矛盾的指令——一边被要求"先安抚情绪",一边又被要求"推进业务目标",一边还被要求"回复控制在两三句话"。结果往往是回复东拼西凑,像几段话被硬缝在一起,或者干脆挑了其中一条执行、把其余的当作没看见。
这不是 prompt 写得不够细致的问题,是这套做法本身有天花板:当"影响这轮该怎么回答"的信号源越来越多,靠人工在一个静态文本里排列组合,注定会失控。
把"决定说什么"拆成几个各司其职的角色
我们的做法是先承认一件事:一通电话里,"说什么""怎么说""用什么说"其实是三个可以分开决策的问题,没必要挤在同一层逻辑里。
- 有一层专门盯业务目标:这通电话本来要收集什么信息、达成什么结果,客户当前的话跟这个目标是推进了还是需要先处理异议。
- 有一层专门盯说话节奏:现在是开场寒暄还是深入沟通,语气该松弛还是该收着,什么时候该主动往前推一把、什么时候该多听少说。
- 还有一层专门盯人设与记忆:这个数字员工"是谁"、有什么话术经验、跟这个客户之前聊过什么,不该在每通电话里失忆重来。
这三层各自维护自己的状态、各自做决策,谁都不直接替对方说话——它们的产出,本质上都是"给这一轮回复提一条建议",而不是"帮 AI 把话写好"。这条建议最终要不要用、怎么用,交给下一层去裁决。
支撑这三层判断的,是一层更底层、几乎零成本的状态追踪:每一轮对话后,系统会更新几十个维度的"认知状态"——情绪、耐心、信任度、重复次数、异议次数等等。这一层刻意做得很轻,用规则而不是模型去算,为的是能在毫秒级别内完成,不拖慢整条链路。
真正的难点:把多条建议拼成一句自然的话
这里才是这套系统里最不显眼、但最花心思的部分。当业务目标层说"该往前推一步了"、节奏层说"这个阶段该简短一点"、状态追踪层说"客户有点不耐烦",这三条建议要是原样堆给大模型,大概率又会撞回"一个大 prompt"的老问题。
我们把这些建议先分类:哪些是必须遵守的硬约束(比如"别重复自我介绍"),哪些是情绪层面的响应(比如"先共情"),哪些是业务目标(比如"问一下预算"),哪些只是语气要求,哪些只是背景信息。分类之后,有一层专门做"冲突剪枝"——一条明确的原则是:一轮对话里最多允许一到两个核心动作同时存在,多了就要按场景取舍。客户情绪很激动的时候,业务目标类的建议会被直接砍掉,这一轮就只剩下安抚;耐心跌到临界值时,语气修饰类的建议会被砍掉,只留最核心的一件事该做什么。
整条链路大致是这样:
多路建议 → 按类型分类 → 冲突剪枝(一轮最多留一两个核心动作) → 组织成结构化说明 → 要求模型融合成一段口语
剪枝完之后,剩下的建议不是简单拼接,而是按"先处理情绪、再自然过渡、最后推进目标"的结构组织成一份说明,并且明确要求大模型把这几步融合成一段口语化的话,而不是三句话各说各的。这一步解决的其实是个很朴素的问题:人在说话时,情绪反应和把事情往前推,本来就是揉在一句话里说出来的,不是分段播报的。
光会"装配"还不够,还得学会"闭嘴"
刚开始做这套系统的时候,我们踩过一个坑:只要某个状态持续存在——比如客户已经连续好几轮耐心都很低——每一轮都会把"耐心值低,注意简短"这类提示重新塞进 system prompt。信息是对的,但同一句话反复出现,实际上在稀释真正有价值的新信息,也在悄悄推高每一轮的处理成本。
后来加了一条规则:只有"新出现"的状态变化才值得说一遍,持续存在但没变化的状态就不用每轮都念叨——除非它是关键目标类的指令,那种即便重复也必须保证大模型每轮都看得到。这个思路其实挺反直觉的:认知系统做得越细致,越应该学会"该说的时候才说",而不是把所有维度都变成背景噪音。
同一个方向上更进一步的尝试,是把"原始状态"升级成"判断"。与其把一堆维度数值原样喂给大模型(耐心值多低、异议出现了几次、情绪是不是负面),不如先在系统内部把这些信号压缩成一两句更接近人类判断的话,比如"客户情绪有点上头,这轮别急着推进业务"。前者是把仪表盘甩给决策者自己看,后者更像是先经过一层判断、只把结论交上去——两种方式我们都在跑,也在持续对比效果。
这套系统不是写死给某一个机器人用的
这里有个容易被忽略但很关键的设计选择:这一整套判断逻辑里几乎没有为某个具体业务写死的文案和规则。情绪怎么描述、异议怎么应对、语气该多正式,全部是可配置项,同一套引擎背后可以跑完全不同性格、不同行业的数字员工——催缴电话该有的分寸感,跟销售电话该有的热情,不该用同一套硬编码规则去覆盖。这也意味着这套认知系统本身的迭代,和某一个具体机器人话术的调整,是两件可以分开进行的事。
我们在做的事
这套系统目前还在持续打磨——多信号怎么排优先级、什么时候该"闭嘴"、怎么把状态压缩成判断而不是数据,这些问题都没有一个能一次性写对的标准答案,更像是要靠大量真实通话不断校准的工程活。我们想做到的效果很简单:客户在电话那头,感受到的应该是一个能接住上下文、有轻重缓急、说话不割裂的对话对象,而不是一个每次开口都在费力兼顾好几条互相打架的指令的机器人。