情人节:我给老妈写了一个“AI 情感助理”,帮她过滤推销电话

百度今天发新闻稿说 3.5 版本超越 GPT-3.5 了。我盯着屏幕,第一反应是去翻 API 文档,看价格和速率限制。这他妈就是 2023 年的条件反射,像狗听见铃铛。

老妈昨天又被保健品推销电话缠了半小时,挂掉电话跟我抱怨,说那小伙子嘴甜得让她不好意思直接挂。我听着火大,不是对推销员,是对自己。我啃了几个月大模型,连个能帮我妈挡电话的玩意儿都搞不出来?这感觉比 2017 年写不出爬虫还操蛋。那时候是技术不行,现在是技术爆炸了,但你被卡在算力、政策和乱七八糟的生态中间,动弹不得。

我决定动手。需求很明确:一个能接电话、识别意图、如果是推销就礼貌挡回去,如果是亲戚或正事就转接或录下来的东西。技术栈第一时间想到 Twilio + OpenAI API,这是标准答案。但 OpenAI 的 API 调用延迟和潜在的墙外不稳定,给我妈用?等于埋雷。国内大厂,百度、讯飞、阿里,都提供了语音识别和 NLP 的 API。百度的这个“超越 3.5”的模型,正好撞上枪口。

我注册了百度智能云,申请了语音交互和文心一言的 API 权限。流程比想象中繁琐,企业认证、个人认证、审核。等权限下来的三个小时里,我翻了翻文档。百度这个 ERNIE Bot API,调用方式跟 OpenAI 的 ChatCompletion 很像,但参数命名是另一套逻辑。比如 `temperature` 叫 `temperature`,但 `max_tokens` 变成了 `max_output_tokens`。这些细微差别,在写代码时就是一个个坑。速率限制写的是“按 QPS 计费”,具体多少得实测。费用页面藏得很深,最后找到的计费说明是“预付费套餐+后付费”,复杂得像电信套餐。

权限终于开了。我写了个最简单的测试脚本,用 `requests` 库发 POST。第一个请求就返回 401,鉴权失败。排查了二十分钟,发现 Access Token 的获取 URL 和参数格式文档里写错了,一个 `&` 被写成了 `&`。这种低级错误在 2023 年的官方文档里出现,让我瞬间梦回 2016 年爬那些 jQuery 满天飞的政府网站,DOM 树乱得让人想吐。

调通了。我设计了一个简单的对话流程:语音识别(ASR)转文本 -> 文本送进 NLP 模型判断意图(问候、推销、家人、其他)-> 根据意图生成回复文本 -> 文本转语音(TTS)播出去。测试对话。我说:“你好,请问是王阿姨吗?” 模拟的 AI 助理回复:“您好,我是王阿姨的语音助手,请问您是哪位?” 基本流畅。但我妈叫“李阿姨”,我测试时忘了改。这种细节错误,在 demo 里是笑话,在产品里就是灾难。

重点测试推销场景。我让朋友模拟推销员打电话,台词是经典套路:“阿姨您好,我们是老年健康中心的,现在有个国家补贴的免费体检活动……” ASR 识别基本准确,转成文本。关键在意图识别。我给的 prompt 是:“判断以下对话是否为保健品、理财、保险等类型的电话推销。如果是,回复‘推销’;如果是家人问候,回复‘家人’;否则回复‘其他’。” 百度的模型返回了“推销”。但接着问题来了:生成拒绝话术。我 prompt 写的是“请生成一句礼貌但坚决的拒绝话术,表示主人不方便接听并请勿再次打扰。” 生成的回复是:“谢谢您的来电,不过我现在不方便接听,请您以后不要再打来了。” 语气有点生硬,但能用。我调整了 prompt,加入了“以一位温和的老年人口吻”,出来的话术好了很多:“哎呀,谢谢你啊小伙子,不过我这边现在不太方便,以后这类活动就不用通知我啦。”

延迟是个大问题。从接电话、ASR、NLP、生成、TTS 到播放,整个链路在国内环境下,理想情况也接近 4-5 秒。这意味着电话接通后,对方会听到 5 秒左右的沉默。这在电话礼仪里是致命的,对方很可能以为信号不好挂断,或者直接开始说下一句,导致识别混乱。我不得不加入一个开场白缓冲音:“您好,正在为您转接,请稍候…” 用 TTS 预生成,一接通就播放,争取时间。

搞到凌晨三点,一个勉强能跑的 demo 出来了。我给我妈手机装好,用我的旧手机测试打了十几个电话。推销模拟基本能挡住,识别率大概 80%。剩下 20% 的失败案例,一种是推销的话术特别模糊,绕开了我的意图分类关键词;另一种是对方语速太快或有口音,ASR 识别错了几个关键词,导致 NLP 判断失误。

我把这玩意儿给我妈看,她挺高兴,但问了我两个问题:“这要一直开着吗?费电吗?” 和 “要是你爸打电话,它也给挡了怎么办?” 第一个问题是工程问题,后台服务、保活、耗电优化,这是另一个无底洞。第二个问题是数据问题,我得手动把家人号码加入白名单,而模型需要能听出“我爸”的声音或说话方式,这涉及到声纹识别,复杂度直接指数级上升。

我瘫在椅子上。百度那个“超越 GPT-3.5”的新闻还在浏览器标签页里闪着。我用了它的 API,做了一个具体、微小、能解决我妈一点实际烦恼的东西。它没有“超越”的感觉,它就是一个工具,有文档错误,有延迟,有计费陷阱,但也有能用的地方。全球算力封锁下,这就是我们这些独立开发者的现实:没有最优解,只有权衡。你用 OpenAI,要面对延迟、合规风险和随时可能断掉的风险。你用国内大厂,要面对不完善的文档、复杂的审核和未知的数据处理政策。你像个裱糊匠,在夹缝里找那一点点可用的胶水,把东西勉强粘起来,能跑就行。

我妈睡了。我关掉电脑。这个“AI 情感助理”也许明天就会因为某个 API 的调整而崩溃。但至少今晚,它让我觉得,那些疯狂啃下去的模型原理和 API 调用,除了焦虑,还能换回一点非常具体的东西。哪怕只是让我妈少接一个骚扰电话。这感觉,比看到任何“超越”的新闻稿,都要真实一点。

© 版权声明
THE END
喜欢就支持一下吧
点赞47 分享