从代码到产品:遇到的第二个坑:AI幻觉

问题: 追问助手会凭空捏造估值数据?

在灵析项目里,我加了一个追问助手。就是用户看完持仓诊断后,可以在底部追问:“茅台现在估值合理吗?”

看起来很简单对吧?结果第一天测试就被用户(其实就是我自己)问破防了。我问:“茅台能买吗?”助手回答:“茅台目前PE处于历史低位,是较好的买入时机。”

我当场血压就上来了。金融产品里出现“买入时机”四个字,监管能把我罚到倾家荡产。

这不是助手想害我,是它不懂金融合规的边界在哪。它能回答是因为DeepSeek确实有这个能力,但那个能力不应该在这个场景里出现。

解决:

一开始,想让大模型自己学会拒绝回答。改Prompt,在指令里写“不允许给出买卖建议”。结果稍微好了一点,但用户换个说法,比如“现在入手合适吗”,它又开始给建议了。Prompt挡不住这种变体,所以要在用户的问题进入大模型之前就把它拦住。

所以我加了一个规则引擎。

说白了就是提前准备好一份敏感词列表,用户发送问题之前先过一遍,命中任何一个词就直接拦截,连DeepSeek都不调用。列表里放的词不多,覆盖了最明显的:“荐股”、“能买吗”、“能卖吗”、“保证收益”、“涨停”、“抄底”。

效果立竿见影。我再问“茅台能买吗”,规则引擎直接拦截,前端显示“该问题已被合规规则拦截”,后台数据库里多了一条拦截记录。

合规页上那个“拦截违规内容”的计数,就是靠这个实时更新的。没有复杂的AI逻辑,没有训练样本,就是一个词表加一个if判断。

让我印象最深的不是这个方案有多好,而是它有多简单。

我之前花了很多时间调Prompt、研究怎么让模型更“听话”,但绕了一圈,真正解决问题的办法是阻断,不是教育。让大模型学会拒绝本身就是一个很不可控的事情,与其靠它自觉,不如直接不让它接触到那些问题。

 

事后复盘了一下:

 
方案效果问题
改Prompt 部分有效 换个说法就绕过
规则引擎前置拦截 完全拦截 需要维护词表

规则引擎不是最优雅的方案,但它是确定性最高的方案。大模型可以不靠谱,但规则引擎必须100%靠谱。在金融产品里,确定性比优雅重要得多。

顺便说一句,这个规则引擎后来被我顺手用在了投教问答和追问助手两个地方。写一次代码,挡了两个入口,一次问题2处解决

posted @ 2026-06-23 08:51  竹雨禅月  阅读(2)  评论(0)    收藏  举报