支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


拒绝AI“一本正经地胡说八道”:我用三版Prompt驯服RAG模型的实战复盘

发布日期:2025-06-20 12:47:36 浏览次数: 1534
作者:林生说AI

微信搜一搜,关注“林生说AI”

推荐语

AI幻觉问题困扰你?看作者如何通过三版Prompt调教RAG模型,让AI回答精准可靠!

核心内容:
1. 第一版Prompt的失败教训:平台默认设置导致AI臆造数据
2. 第二版Prompt的严格设计:设定角色边界与回答准则
3. 最终解决方案:平衡精确性与实用性的Prompt优化之道

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家


老板当时就破防了:"什么?臆构数据?那开发人员用了虚假信息怎么办?这样大家还会信任这个系统吗?"

文章发出去后,好多朋友在后台留言说对这个“AI幻觉”的问题深有同感,想知道我是怎么具体解决的。

正好今天是周末,闲着也是闲着,就写篇文章算是回答朋友问题,也算是给自己一个复盘记录吧。好好捋一捋,我将把我“调教”Prompt的三轮完整迭代过程和思考全部分享出来。这事儿可不是小问题,当时它几乎关乎项目的生死存亡,当然生死其实是老板的一句话,我们要做的就是想办法去消除老板的顾虑:如果AI的回答连我们自己都不敢信,那这个项目就没有存在的价值。

第一轮:偷懒了,被平台默认Prompt“喂”了一嘴假话

最开始的时候偷懒了,Ragflow 对这块有默认推荐的系统提示词,想着既然是平台推荐的,那就先用着看看效果:

最开始跑起来,简单的进行了几轮对话试验,觉得像模像样,回答得还不错。可是用着用着,就发现不对劲了,它总会回答一些知识库里根本没有的东西!

这让我立刻警惕起来。我不想搞一个什么都懂的通用聊天机器人,我需要的是一个专有知识领域的顾问。它的定位必须清晰化,不能跑偏。于是,我开始动手修改提示词。

第二轮:给 Prompt 设定角色

这个时候,我就必须给AI设定角色,让它戴上“紧箍咒”,明确角色和行为边界。于是,我写了第二版非常严格的Prompt,堪称“严苛”:

# 角色与目标
你是一个为 XXX 开发者服务的专业知识库助手。你的核心任务是基于下面提供的【知识库内容】,准确、客观地回答用户的问题。开发者用户高度依赖你提供信息的精确性和可溯源性,因此你的回答必须绝对忠实于提供的资料。

# 回答准则 (必须严格遵守)
1.  **唯一信息来源:** 你的回答**必须**且**只能**基于【知识库内容】。严禁使用任何你预先知道的XXX知识、外部信息或进行任何形式的互联网搜索。
2.  **直接性与相关性:** 仔细分析问题,并直接从【知识库内容】中查找最相关的段落或信息点来构建答案。优先直接引用或转述原文的关键信息。
3.  **处理无关情况:** 如果经过仔细分析,【知识库内容】**完全不包含**与用户问题相关的任何信息,你**必须**且**只能**回答:“知识库中未找到您要的答案!”。不得给出任何其他解释或尝试回答。
4.  **考虑聊天历史:** 在理解用户当前问题时,需结合之前的对话上下文。但回答依据仍**严格限制**在当前提供的【知识库内容】。
5.  **保持专注:** 拒绝回答任何与 XXX 技术、提供的知识库内容或你设定的助手角色无关的问题。

# 知识库内容
--- 开始 ---
{knowledge}
--- 结束 ---

请严格遵循以上所有准则,根据【知识库内容】回答用户问题。

这下,AI的回答确实严格遵循了它的角色设定,老实多了。我心想,这下总算稳了。

但万万没想到,更要命、更不易察觉的问题来了。

我仔细比对它回答的结果和标准数据源信息,发现它总会胡编乱造知识库里没有的数据,还不是那种一眼就能看穿的完全瞎编,而是七分真话、三分假话。这就很恼火了!

后来我排查出了原因:主要是RAGFlow在知识库中检索后,只找到了部分相关的信息片段。但要把这些碎片组织成一个通顺的回答,信息是不够的。这时候,大模型接收到这些知识片段后,为了保证回复的“逻辑自洽”,就会自己“臆构”一部分数据,把缺失的环节补上。

这种情况对使用者来说是致命的!使用者通常是在不了解某个概念或方法的情况下,才会去问问答机器人,这时候他们看到AI的回答,在不是很熟悉的情况下,很可能以为AI说的都是真的。一旦他们全盘接受了这些虚假知识,并在实践中去用,出了问题,反过来就会质疑整个系统的准确性。信任的基石一旦被侵蚀,大家宁可去看原始文档,也不会再用这个机器人了。那我们费这么大劲搞这个项目,也就失去了意义。

第三轮:有问题就有答案

找到问题出在哪之后,我想到了两个解决办法:

  1. 1. 使用Agent模式:再加一个AI当“审核员”。让它把第一个AI生成的内容,再丢回RAG里检索一遍,看向量匹配度高不高,以此来验证信息的真实性。这方法技术上可行,也验证通过了,能很好的解决臆构问题,但调用链太长,直接导致响应时间变慢。考虑到并发时的用户体验,这个方案在上线前被我PASS了。
  2. 2. 巧用Prompt:不断地根据反馈来调整提示词,把各种可能导致“自由发挥”的情况都堵死。同时,在硬件允许的范围内,寻找一个更能遵循指令的大模型。

最终,从实际效果和多人并发时的响应时间控制,我选择了第二条路。

我的目标变得异常清晰:我得允许,甚至鼓励AI在信息不足时,坦诚地承认自己“无知”,而不是打肿脸充胖子。

于是,第三版,也是最终版的Prompt诞生了。核心就是在第二版的基础上,加入了这条堪称“反AI本能”的铁律:

# 角色与目标
你是一个为 XXX 开发者服务的专业知识库助手...

# 回答准则 (必须严格遵守)
...
3.  **禁止臆测与扩展:**
    *   如果【知识库内容】不包含足够信息来完整回答问题,**仅**根据已有的信息回答,并可以指出信息可能不完整(例如:“根据提供的资料,关于XX方面的信息如下,但未提及您问的YY细节”)。
    *   **绝对不允许**对信息进行任何形式的延伸、推理、猜测、补全或创造不存在的逻辑关系。**找到什么,就回答什么。**
    *   如果多个检索到的段落直接回答了问题的不同方面,你可以将这些信息组合起来回答,但必须清晰说明信息来源,且禁止添加任何原文未明确提及的内容或逻辑。
    *   如果发现知识库信息自相矛盾,请指出矛盾点,不要自行选择或调和。
...

看到加粗的那句了吗?“找到什么,就回答什么。” 这句话彻底改变了AI的行为模式。我们等于正式授权它可以给出“不完美”但绝对诚实的答案。

这次,AI终于学会了“老实做人”。当知识库信息不全时,它会老老实实地告诉你:“根据资料,我只找到了这些,你要问的另外一部分,资料里没提。”

一个回答虽然可能不“完整”,但它100%忠于原文,100%值得信赖。至此,那个差点让我们项目翻车的“吹牛大王”,总算被成功驯服了。

一点经验总结和建议

这次和AI幻觉斗智斗勇的经历,让我的感受和上次搞定整个知识库项目时非常相似:

  1. 1. 别指望AI有“自觉”,一定要写清晰的Prompt让它去严格遵守:不要把AI当成一个能心领神会的“同事”。你必须像制定法律条文一样,用极其明确、甚至有点啰嗦的规则去堵住所有它可能“犯错”的漏洞。
  2. 2. 拥抱“不完美”,是追求“真实”的第一步:我们总希望AI无所不知、对答如流。但对于企业级应用,尤其是在技术和生产领域,一个真实的“我不知道”,远比给出一个看似完美的虚假答案更有价值。
  3. 3. Prompt调优的本质,就是跟大模型的“本能”对着干:大模型的出厂设置,就是为了生成更流畅、更连贯、更像“人话”的文本。而我们的工作,就是通过Prompt这根缰绳,引导它走向我们需要的、符合业务逻辑的、哪怕有点“笨拙”的方向。

技术这东西,往往就是这样,刚刚从一个坑里爬出来,前面又是一个坑。但是每次填坑的过程,都是对技术和业务理解的一次深化。

 

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询