Skip to content

如何设计提示词来减少 AI 的幻觉问题? ​

  • 标签:Prompt、幻觉问题

🏛 业务架构师 ​

从提示词设计入手降低幻觉,我总结为六招,都是生产验证过的:

  1. 限定知识边界(最有效):明确指示"仅基于提供的资料回答,资料中没有相关内容时,明确说'资料中未提及',不要编造"——把"开放编造"改为"有据可依",RAG 场景必配;
  2. 强制引用溯源:要求每个论断标注来源编号(如 [1][2])——模型为了"挂出处"会更谨慎,且答案可人工核验;
  3. 允许说不知道:显式声明"不确定时回答'我不确定'"——很多幻觉源于模型被默认期待"必须给答案";配低一点的 temperature 效果更佳;
  4. 要求先列依据再下结论:让模型先引用资料原文要点,再归纳答案——推理链被锚定在证据上,"先想答案再找理由"的合理化幻觉减少;
  5. 拆解任务降低单步难度:复杂问题分步问(先抽事实、再做推理、最后汇总),每步专注,错误率低于"一口吃成胖子";
  6. Few-shot 示范拒答行为:给一两个"资料不足→礼貌拒答"的正例,示范期望行为——比写十条规则都管用。

配套的工程提醒:提示词只能"降低概率",不能根除——关键业务必须叠加输出校验(数字核对、事实比对)与人工抽检;提示词优化后要过评测集回归,验证幻觉率确实下降而非"体感变好"。

我的优先级:先做 1+2(边界+引用,一天上线),效果通常覆盖大半;4、5 用于高价值场景精修。

🏗 系统架构师 ​

减少幻觉的提示词设计,我的六条实战技法(按有效性排序):

  • RAG 强 grounding + "仅依据上下文"约束:检索内容用分隔符明确包裹,指令写清"仅根据以下资料回答;资料中没有依据时,直接回答'根据现有资料无法确定'"——把"不知道"合法化是性价比最高的一句话,硬编多数发生在被强迫回答时;
  • 先引用后作答(证据链前置):要求模型先列出"依据的原文片段",再基于引用生成答案——生成过程被锚定在证据上,幻觉率显著下降,还顺带产出可核验的引用;
  • 任务分解降复杂度:复杂问题拆成多个简单子问题分别回答(每步都有依据),而不是一步跳到结论——推理链越长,编造空间越大;
  • 量化约束 + 输出契约:明确"不确定的内容标注[不确定]"、"数字必须来自原文"、结构化输出字段(答案/依据/置信度)——让不确定性显式暴露而不是藏在流畅文本里;
  • 角色与领域限定:设定"你是基于给定资料的助手,不做资料外的推断"——压缩模型的"自由发挥"边界;显式禁止常见幻觉模式("不要推测缺失数据,不要编造引用和数字");
  • 低温解码 + 自我校验:temperature 调低(0~0.3);关键任务加一轮"复查:答案每句话是否被资料支撑"的自我核查步骤(成本翻倍但高价值场景值得)。

架构提醒:提示词只能"激发"模型的可靠行为,不能保证——系统性防幻觉要靠检索质量(好的上下文)+ 后验校验(NLI/Judge 比对答案与来源)+ 拒答兜底(低置信转人工)的组合拳。

💻 全栈开发专家 ​

我从 prompt 设计 + 系统设计两层减幻觉(都是实操验证过的):

Prompt 层技巧:

  1. 锚定知识源:「仅根据以下提供的资料回答,不得使用资料之外的知识」——把开放式生成变成阅读理解;
  2. 显式拒答许可:「如果资料中没有相关信息,直接回答『根据现有资料无法回答』」——不给模型「必须编一个」的压力,这是被严重低估的一条;
  3. 引用要求:「每个关键论断后标注 [n] 引用」——迫使模型「回看」依据,编造的内容很难找到引用锚点;
  4. 低温度(0~0.3):事实型任务压制采样随机性;
  5. few-shot 拒答示例:给一个「资料不足→礼貌拒答」的示例,行为模式比形容词有效;
  6. 先引后答:「先摘录相关原文,再基于摘录作答」——两步走,中间产物可校验。
请严格按以下格式:
依据:<从资料中摘录的原句,标注编号>
回答:<基于依据的结论,不超过3句话>
若依据为空:回答"知识库中未找到相关信息"

系统层配套(prompt 的兜底):RAG 保证知识供给质量(检索不准 prompt 再好也白搭)、输出后验校验(NLI 忠实度、引用核对)、置信度低走人工。

两个反面教训:一是「不要幻觉」这种抽象禁令基本无效,要转成可执行的判定规则(「不确定的具体数字要回答不知道」);二是长上下文塞太多资料反而幻觉变多——相关度排序后取 top 比全塞好,less is more。