处理来信的 Agent 和客户的休假自动回复来回发了一晚上:我给它加了三道刹车

19 阅读3分钟

“早上一开电脑,发件记录里有四十多封发给同一个客户的信,全是我们那个助手发的。”

市场部的老周一早就把我叫过去。我们办公室给他搭了个处理来信的 Agent:读收件箱里的新邮件,判断是不是客户要资料,是的话从本地知识库里找产品说明,起草回复,常规的几类直接发出,其余的留给人看。跑了一个多月,一直挺顺。

图:Andreas Duess / Wikimedia Commons / CC BY 2.0

我翻了那串往来。前一天傍晚,客户那边的联系人开了休假自动回复,内容是“本人休假至下周一,资料需求请回复本邮件说明”。Agent 读到“资料需求请回复说明”,判断这是一封要资料的来信,起草了一封回复发过去;对方的自动回复又回了一封;Agent 再回。一晚上来回四十多封,最后是对方服务器限流才停下来。

老周问:“它怎么就看不出来那是自动回复?”我说它只看正文,不看信是谁写的、怎么来的。正文里确实有“请回复”,按它的规则就该回。问题不在模型笨,而在我们没给它划出“不该回”的范围。

我改了三处。

第一,起草之前先判断是不是自动回复。邮件头里通常有标记自动回复的字段,主题里常见“自动回复”“休假”“Out of Office”这类字样,正文里有“本人休假至”“此为系统邮件”这类句式,命中任何一项都不起草,只在待办里记一条“对方休假中”。

第二,同一个收件人设上限。二十四小时内最多自动发两封,超过就停下来转给人处理,并在群里提醒。哪怕判断规则有漏,也不会再刷几十封。

图:Sara Teasdale(信件扫描,公有领域) / Wikimedia Commons / 公有领域

第三,同一串往来做循环检测。一个邮件线程里如果连续三封都是“我们自动发、对方秒回”,间隔都在一分钟以内,就判定为循环,立刻暂停这个线程的自动处理。

验收做了两轮。一轮是把收件箱过去两个月的一百二十封来信重放,其中十四封是各种自动回复、退信和系统通知,改之前 Agent 会回其中九封,改之后一封都不回,正常客户来信的回复数没变。另一轮是我自己开了个测试账号,设好休假自动回复,故意给它发资料请求,Agent 只记了待办,没有回信。

图:KeepActive Australia / Wikimedia Commons / CC BY-SA 4.0

老周最后给客户补发了一封致歉信,是他自己写的。

你们的 Agent 有没有跟别的自动程序“聊”起来过?最后是怎么发现的?欢迎在评论区说说。

关于自动回复判断和循环检测的规则,我整理在 evafang.com 上了。