当 AI 智能体产生幻觉时该怎么办?答案更多关乎架构,而不是 prompt。
最初发表于 Medium
在过去几周里,我把一个 AI 智能体投入了生产环境,目标很简单:为一家医疗诊所预热潜在客户并提供支持,直接在 WhatsApp 上安排就诊和回答问题。
在测试阶段,一切都很顺利.. 但当真实的潜在客户开始进来时,现实狠狠地打了我一巴掌。
我开始跟踪任务的成功率,并直接在数据库里监控对话,就在那时,不一致的问题浮现了出来。
即使有一个结构良好的知识库,智能体还是开始编造内容。
我的第一反应是改进知识库。这有帮助,但并没有解决 100% 的问题。
接着,我优化了 prompt。它又有了改善,但在某些情况下仍然会跑偏。
转折点在于把解决方案拆开:单个智能体就是搞不定。
解决办法是在前面放一个「分类器」智能体,它识别用户的意图,并把用户路由到其他专门的智能体。
理论与实践
这次实践经历让我非常好奇,于是周末我停下来去理解幻觉背后的理论。
我偶然读到了一篇文章(我不记得是谁推荐的,但它很有启发性)。
我原本就知道,幻觉不是一个「bug」,而是 LLMs 固有且不可避免的特性。
重点不应该是消除它,而是缓解和管理它。不过在实践中,这相当复杂。
基于我的经验以及那篇文章里的启发,下面是我在这个过程中学到的 3 条实用建议:
1. 把你的知识库当成一个产品来对待
幻觉的主要原因来自糟糕、不完整或过时的数据。
改进知识库(一种被称为 RAG 的技术)是让 AI 立足于事实的第一步,可以降低它编造信息的可能性。
2. 对 prompt 保持偏执
含糊的指令会产生含糊的答案。
研究表明,你提问的方式会直接影响答案的质量。定义智能体的角色,给出清晰的示例,并限制任务的范围。一个好的 prompt 是避免偏离的好开始。
3. 复杂的问题,就用多个智能体
一个智能体试图处理很多不同的任务(预约、回答问题、资格筛选)时可能会混乱。对我有效的方案是使用一个路由智能体来识别意图,然后把球传给专家智能体。
这种做法在系统中形成了天然的护栏(guardrails),与文章所说的控制机制相吻合。
这些经验里的很多内容,我几乎每周都会讲给不同的人听,但当你自己就是那个动手实现的人时.. 你最终会先忘掉,再用最艰难的方式学一遍,然后才算真正学会 :)
这份研究很密集,但对任何在用 AI 构建东西、想要深入表面之下的人来说,都值得一读。