做打车Agent半年我终于搞懂了置信度这个东西
AI打车Agent的「自作主张」正在引发用户投诉风暴。当系统自信满满地将用户送往错误机场时,背后暴露的是置信度机制的致命缺陷。本文揭秘如何通过四档分级策略,将投诉率从2.1%直降至0.4%,并深入解析3秒弱确认、历史偏好衰减等关键设计细节,展现AI产品在「自信」与「保守」间寻找平衡的艺术。

上个月,我朋友公司的打车 Agent 出了一个事故。
用户说了一句「帮我叫个车去机场」,Agent 很自信地叫了一辆去浦东机场的车。
结果用户要去的是虹桥机场。
用户投诉了。还发了微博。
这不是个例。我们统计了一下,类似的「AI 自作主张」投诉,每天有二三十起。
占比不高,但每一起都很伤用户体验。而且,这种事一旦上了社交媒体,传播起来比好评快多了。
我们花了三个月时间,重新设计了 Agent 的「置信度分级」机制。投诉率从 2.1% 降到了 0.4%。
这篇文章记录一下我们踩过的坑,以及最后是怎么解决这个问题的。
01
先把问题说清楚。
用户说「帮我叫个车去机场」这句话,对人来说很简单,但对 AI 来说,信息是不完整的。
去哪个机场?上海有两个,浦东和虹桥。
从哪里出发?当前位置还是另一个地址?
要什么车型?快车还是专车?
现在叫还是预约?
这些问题,用户没说,AI 怎么办?
我们最初的方案很朴素,AI 自己猜。
根据用户历史数据,这个用户之前 80% 的时候去的是浦东机场,那就默认浦东。车型默认快车,时间默认现在。
听起来很合理对吧。
但实际跑下来,问题大了。
02
我们最初的方案是「二元判断」。
意图识别出来了,就执行。识别不出来,就问用户。
非常简单粗暴。
效果怎么样?
很差。
第一个问题是,太多「确定」其实是错的。
AI 觉得自己识别出来了,置信度很高,直接执行。结果执行错了。
比如用户说「去机场」,AI 根据历史数据默认了浦东机场,因为历史数据里浦东更多。但用户这次实际要去虹桥。
高置信度不代表高准确率。
这个道理我们是交了学费才懂的。
第二个问题是,太多「不确定」影响体验。
另一个极端是,AI 太保守,动不动就问用户。
- 你要去哪个机场?你从哪里出发?
你要什么车型?
你要现在叫还是预约?
用户会崩溃的,我就说了一句话,你问我四个问题?
反复确认会严重影响用户体验。
所以我们陷入了一个两难,执行太多会出错,问太多会烦人。
03
后来我们引入了「置信度分级」。
核心思路是,根据置信度高低,采取不同的处理策略。
我们把置信度分成四档。
第一档,90% 以上,直接执行。用户感知是秒响应,无确认。
第二档,70% 到 90%,弱确认。显示选项,3 秒无异议默认通过。
第三档,50% 到 70%,强确认。必须用户选择才能继续。
第四档,50% 以下,主动询问。让用户提供更多信息。
04
具体怎么操作呢。
第一档,直接执行。
条件是意图明确,关键信息完整,没有歧义。
比如用户说「帮我叫个快车从公司到浦东机场 T2」,这句话信息量很完整,意图很明确。AI 直接呼叫快车,从用户设置的公司地址到浦东机场 T2。
这种情况不需要任何确认,直接执行就行。
第二档,弱确认。
条件是意图明确,但有一定默认值需要确认。
比如用户说「去机场」。
AI 会说,好的,为您呼叫快车从当前位置到浦东机场 T2,3 秒后自动确认,点击可修改目的地。
如果用户 3 秒内没有操作,默认确认。如果用户点击了修改,展示其他选项,虹桥机场、其他航站楼。
这种方式既给了用户反悔的机会,又不会让用户觉得太啰嗦。
第三档,强确认。
条件是存在明显歧义,需要用户选择。
比如用户说「去机场」,但历史数据显示用户去过浦东和虹桥的次数差不多。
这种情况 AI 就不能自己猜了,必须让用户选。
AI 会说,请选择您要去的机场,然后给出选项,浦东国际机场,虹桥国际机场。
必须等用户选择才能继续。
第四档,主动询问。
条件是关键信息缺失,无法合理默认。
比如用户说「我要赶飞机」。
这句话表达了一个意图,但关键信息完全缺失。去哪个机场,什么时候走,都不知道。
AI 会说,好的,请告诉我您的航班信息或目的地机场,我来帮您叫车。
05
说到这里可能有人会问,置信度怎么算?
这个问题我们也纠结了很久。
最开始我们直接用大模型输出的 confidence 值,发现不靠谱。大模型的 confidence 跟实际准确率对不上。
后来我们改成了综合计算,考虑四个因素。
第一是意图识别的置信度,模型对意图分类的把握程度。
第二是槽位完整度,必填信息是否都有了。
第三是歧义程度,关键词是否有多个可能的解释。
第四是用户历史,这个用户以前的偏好是否明确。
举个例子。
用户说「去机场」。
意图识别置信度 95%,明确是叫车。槽位完整度 70%,缺少具体机场。歧义程度高,有两个机场可选。用户历史 90%,大部分时候去浦东。
综合置信度大概是 71%,落入弱确认档位。
这个计算方式不一定是最优的,但至少比单纯用模型的 confidence 靠谱多了。
06
还有几个细节问题需要处理。
第一个是弱确认的 3 秒怎么定的。
这个时间是测试出来的。
太短,1 秒,用户来不及反应。太长,5 秒,用户等得不耐烦。
我们做了 A/B 测试,发现 3 秒是最优的。用户有足够时间看到信息,如果要修改来得及点击,如果没问题不会觉得等太久。
第二个是用户历史怎么用。
我们会记录用户的偏好。常用地址,公司、家、机场。车型偏好,快车多还是专车多。时间偏好,通常什么时间叫车。
这些偏好会影响默认值的选择。
但有个坑,偏好会过时。
用户换工作了,公司地址变了。用户搬家了,家的位置变了。
我们的处理方式是,偏好有时效性,超过 3 个月不用的偏好权重下降。偏好出现变化的时候,比如连续两次选了不同的地址,主动询问是否更新。
第三个是兜底策略。
不管置信度多高,有些情况必须做兜底。
金额超过阈值,预估费用超过 200 元,必须确认。距离超过阈值,目的地超过 50 公里,必须确认。异常时间,凌晨 2 点到 5 点叫车,必须确认。
这些是高风险场景,错了代价很高,宁可多问一句。
07
说说效果。
上线一个月后的数据。
首次成功率,优化前 65%,优化后 72%。最终完成率,优化前 82%,优化后 91%。平均交互轮次,优化前 3.2 轮,优化后 2.1 轮。用户投诉率,优化前 2.1%,优化后 0.8%。
后来又迭代了几个版本,投诉率降到了 0.4%。
几个关键变化。
首次成功率提升,更多用户一次就成功,因为弱确认减少了不必要的询问。
最终完成率提升,更少用户中途放弃,因为体验更流畅。
交互轮次减少,从 3.2 轮降到 2.1 轮,效率提升明显。
投诉率下降,错误执行的情况大幅减少。
08
聊聊我们踩过的坑。
第一个坑是置信度阈值拍脑袋定的。
我们最初的阈值是直接拍脑袋,90%、70%、50%。
后来根据用户反馈不断调整。
有用户说「明明我说得很清楚,怎么还要确认」,说明直接执行的阈值可以调高一点。
有用户说「我没说去浦东,怎么默认浦东」,说明机场选择的确认需要加强。
收集反馈,分析原因,调整阈值,观察效果。这个循环要持续做。
第二个坑是不同业务场景阈值不一样。
打车场景,错了可以取消重新叫,代价不算太高,可以适当激进。
支付场景,错了可能造成资金损失,必须非常保守。
没有通用的阈值,要根据业务特点调整。
第三个坑是忽略了极端情况。
大部分用户的请求是正常的,但总有一些极端情况。
用户输入了一个不存在的地址。用户要求去一个 500 公里外的地方。用户的请求自相矛盾,帮我叫个车但我不要坐车。
这些极端情况要单独处理,不能让系统崩溃或者给出荒谬的响应。
09
做完这个项目,我有一个很深的感触。
AI 的智能,不在于它多聪明,而在于它知道自己多不聪明。
什么意思呢。
好的 AI 产品,是知道什么时候该直接执行,什么时候该问一句,什么时候该多问几句的。
这种分寸感,才是好产品的核心。
太自信的 AI 会出错,太谦虚的 AI 会烦人。找到那个平衡点,需要大量的数据、测试和迭代。
我们做了三个月,还只是刚刚摸到一点门道。
如果你也在做 Agent 类的产品,希望这些经验对你有帮助。
置信度分级不是什么高深的技术,核心就是一个原则,根据把握程度决定行动方式。但要把这个原则落地,需要很多细节的打磨。
欢迎在评论区讨论,我们可以聊聊具体的实现。
本文由 @鸣老师 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
- 目前还没评论,等你发挥!

起点课堂会员权益



