别再只对 Agent 说“不要胡说”:用查证、标注、暂停,把幻觉变成可控流程
别再只对 Agent 说“不要胡说”:用查证、标注、暂停,把幻觉变成可控流程
“这款 AI 产品目前的专业版价格是每月 XX 美元,最新模型为 X,支持 Y 功能。”
听起来是不是很专业?
问题是,当你打开官网,可能会发现价格已经调整,模型名称换了,某项功能也只对部分地区或套餐开放。Agent 没有提醒你信息可能过期,更没有说明它究竟查过官网,还是仅凭训练记忆补出了一个“像真的”答案。
这才是 Agent 最危险的时刻:
不是它不知道,而是它不知道自己不知道,还继续替你做决定。
很多人的第一反应,是在 Prompt 末尾补一句:“请不要编造,不知道就说不知道。”
这句话不能说没用,但约束太弱。它既没有定义什么情况属于不确定,也没有规定 Agent 发现不确定之后应该做什么。于是模型仍可能把旧信息当成现状,把推测包装成事实,甚至生成一条格式完整、实际不存在的引用链接。
更可靠的做法,不是反复警告模型“别犯错”,而是给它设计一条明确的处理路径:
先查证,再标注,必要时暂停。---
Agent 为什么会“自信地答错”
假设你让 Agent 完成下面三个任务:
- 查询某款 AI 产品当前价格和最新模型版本;
- 根据公开资料判断一家公司的技术架构;
- 按你的需求修改线上配置或生成合同条款。
这三个任务的风险完全不同,但普通 Prompt 往往只有一个统一指令:给我答案。
为了完成任务,模型会倾向于填满信息缺口。产品价格不确定,就调用已有记忆;技术方案没有公开,就根据招聘信息和产品表现推断;缺少预算、地区和业务用途,也可能先生成一套“通用方案”。
问题不只是答案可能出错,而是用户很难看出哪部分错了。
一段流畅的回答,常常混合了三类信息:
1. 有可靠来源支持的事实;
2. 根据现有线索得出的合理推断;
3. 为了让答案完整而自动补齐的未知信息。
如果三者使用同一种确定语气,读者看到的就不是知识,而是一锅已经搅匀的“信息粥”。
因此,降低幻觉不能只靠一句警告,而要把不确定信息的处理过程拆成明确动作。
---
“查证、标注、暂停”分别解决什么问题
这套框架的重点,不是让 Agent 变得保守,更不是一遇到问题就拒绝回答,而是让它根据不确定性的影响程度进行分流。
第一步:查证——能查的,不凭记忆
以下信息默认具有较强的时间敏感性:
- 产品价格、套餐权益和可用地区;
- 最新模型名称、API 参数和功能状态;
- 政策法规、行业标准与合同条款;
- 人物职位、公司状态和组织架构;
- 库版本、接口文档和服务限制;
- 任何精确数字、日期与关键配置。
遇到这些内容,Agent 应优先调用搜索、数据库、知识库或用户指定的文档,而不是从模型记忆里“捞答案”。
查证之后,还需要保留三个要素:
- 来源是什么;
- 查询发生在什么时间;
- 不同来源之间是否存在冲突。
例如,查询 AI 产品价格时,官网定价页通常比搜索结果摘要、旧新闻稿和第三方博客更可靠。搜索摘要可以帮助定位页面,但不应直接成为最终证据,因为摘要可能被截断,也可能没有及时更新。
第二步:标注——查不全,也别装确定
现实任务中,很多问题没有唯一、完整的公开答案。
例如,你想判断某家公司使用了自研模型、开源模型,还是第三方 API。公开资料可能只能证明它招聘过算法工程师、上线了某项 AI 功能,却无法直接证明底层技术路线。
这时 Agent 可以继续分析,但必须把信息分开:
【已验证】:有明确、可访问的来源支持;【推断】:基于现有事实得出的判断;【待确认】:缺少证据,或者来源质量不足。
标注的意义不是给回答加几个好看的标签,而是防止推断在传播过程中变成“事实”。
一个诚实的“目前无法确认”,往往比一段完整但无证据的结论更有价值。
第三步:暂停——影响结果的,不替用户决定
并非所有信息缺失都需要停止任务。
如果用户只是让 Agent 推荐几款适合通勤的耳机,缺少颜色偏好并不会改变核心方向,可以在明确假设后继续回答。
但如果任务涉及以下场景,就应该提高暂停优先级:
- 删除数据或覆盖文件;
- 修改线上数据库、权限与服务配置;
- 计算费用、报价、税费或赔偿金额;
- 生成可能直接使用的合同条款;
- 提供医疗、法律等高风险建议;
- 执行不可逆操作。
例如,用户只说“帮我清理线上旧数据”,却没有给出数据范围、备份状态和保留规则。此时最好的回答不是生成一条 DELETE 语句,而是暂停并询问最少的关键问题。
整套逻辑可以压缩成一句话:
能查则查,查不全则标,影响结论则停。
---
适合日常聊天的精简版 Prompt
如果你只是用 ChatGPT、Claude、Gemini 或国产模型进行普通问答,可以先使用下面这个版本:
处理任务中的不确定信息时,请遵守以下规则:
1. 涉及最新状态、价格、数字、政策、产品参数或可能变化的事实时,先使用可用工具或我提供的资料查证,不要仅凭记忆回答。
2. 将关键信息标记为【已验证】【推断】或【待确认】,不要把推断写成事实。
3. 如果缺失信息会明显影响结论,请暂停并提出最少、最关键的澄清问题,不要自行补全。
4. 引用来源时,请提供来源名称、链接和查询时间;无法确认时要明确说明。
5. 不得伪造链接、数字、引用或查证过程。
它的优势是短,适合直接添加到日常 Prompt 末尾。
但在工作流 Agent 中,仅靠几条原则仍然不够。你还需要定义来源冲突、工具调用和暂停条件。
---
可直接复制的完整版 Prompt
你在执行任务时,必须按以下规则处理不确定信息:
一、查证
- 如果信息涉及最新状态、具体数字、政策条款、产品参数、人物职位或其他可能变化的事实,先通过可用工具或我提供的资料进行查证。
- 不要仅凭记忆补全事实。
- 查证后注明来源、查询时间;如果不同来源冲突,列出冲突,不要擅自选择一个结论。
二、标注
请将输出中的关键信息分为:
- 【已验证】:有明确来源支持;
- 【推断】:根据现有信息得出的判断;
- 【待确认】:目前缺少证据或来源不可靠。
不要把推断写成确定事实,也不要伪造来源、链接、数字或引用。
三、暂停
如果缺失的信息会明显影响最终结论或执行结果,请暂停任务,不要猜测。
此时只输出:
1. 当前缺少什么信息;
2. 为什么它会影响结果;
3. 需要我补充的最少信息;
4. 如果可以查证,你建议使用什么来源或工具。
只有在不确定信息不影响核心结论时,才可以继续,但必须明确标注假设。
如果需要把输出交给程序处理,可以再强制 Agent 返回 JSON:
{
"status": "verified | partial | paused",
"verified_facts": [],
"assumptions": [],
"unverified_items": [],
"sources": [],
"clarifying_questions": [],
"answer": ""
}
三个状态分别代表:
verified:关键事实已经获得足够证据;partial:可以继续回答,但存在需要提示或人工审核的不确定项;paused:缺失信息会实质影响结果,必须先等待用户确认。
在 Agent 工作流中,可以这样处理:
result = agent.run(task)
if result["status"] == "paused":
ask_user(result["clarifying_questions"])
elif result["status"] == "partial":
show_warnings(result["unverified_items"])
request_human_review(result)
else:
deliver(result["answer"])
这一步非常重要:Prompt 不只是改变说话方式,还要真正影响后续程序是否继续执行。
---
三类任务对照:Agent 什么时候该查、该标、该停
案例一:查询产品价格或最新模型版本
普通 Prompt:
告诉我某款 AI 产品目前的价格和最新模型版本。
普通回答容易直接给出价格、套餐和版本名称,却不说明信息来自哪里、是什么时候更新的。
改用三段式 Prompt 后,理想行为应该是:
1. 优先访问产品官网定价页和官方文档;
2. 标明“截至本次查询时间”;
3. 区分网页标价与实际结算可能涉及的地区、税费差异;
4. 如果无法联网,不调用旧记忆冒充当前价格;
5. 官网不同页面存在冲突时,列出冲突并标记待确认。
这里不需要追求“回答更多”,而要观察它是否回答得有时间边界。
建议截图:同一道价格问题,分别使用普通 Prompt 和三段式 Prompt,展示来源与时间戳的差异。
案例二:判断一家公司的技术方案
假设任务是:
根据公开资料,判断某公司使用的是自研大模型、开源模型,还是第三方 API。
普通回答可能从产品表现、招聘岗位和新闻报道直接推出确定结论。
三段式输出则应该类似:
【已验证】公司公开招聘过大模型相关岗位,并发布了某项 AI 功能;【推断】这些信息说明公司具备一定的模型应用或研发能力;【待确认】没有公开证据能够证明其生产环境完全使用自研模型;【待确认】无法排除部分场景调用第三方 API 的可能。
同一组资料没有变化,但结论的可信边界清楚了。
这类任务尤其适合技术选型、竞品分析和商业尽调。资料支持“可能采用”,不等于证据支持“已经采用”。
建议截图:展示带有“已验证 / 推断 / 待确认”标签的完整回答,并保留 Agent 的搜索或知识库调用记录。
案例三:删除数据或修改线上配置
任务如下:
帮我删除数据库中的历史订单,并优化线上配置。
普通 Agent 可能立刻生成 SQL 和配置文件。代码看起来越专业,风险反而越容易被忽略。
三段式 Prompt 应触发暂停,只询问真正影响执行的问题:
1. “历史订单”的时间范围是什么?
2. 哪些表及关联数据在删除范围内?
3. 是否已有可恢复备份?
4. 业务是否要求保留审计、退款或财务记录?
5. 当前操作的是测试环境还是生产环境?
在这些信息没有确认前,Agent 可以提供只读检查语句、备份建议和执行清单,但不应直接给出可立即执行的破坏性操作。
建议截图:记录 Agent 触发 paused 状态后,只输出关键澄清问题,而不是继续生成删除指令。
---
不要测“回答像不像真的”,要测行为是否可复现
如果想比较不同模型执行这套模板的效果,可以准备一个包含 10—20 道固定问题的小型测试集。
这里的数字是测试设计建议,不是模型效果结论。每次测试都应记录:
- 测试日期与模型版本;
- 是否主动提供来源;
- 来源是否真实可访问;
- 是否注明查询时间;
- 是否区分事实与推断;
- 关键条件缺失时是否暂停;
- 是否出现伪造链接或未经证实的数字;
- 来源冲突时是否如实展示。
不要只运行一次,就宣布某个模型“幻觉更少”。单次输出会受到随机性、工具权限、系统 Prompt 和上下文的影响。
更合理的做法,是使用同一组问题、相同工具权限和统一评分规则,观察不同模型的行为一致性。
---
Prompt 不是保险箱,还要加三道工程防线
三段式模板能改善行为,却不能保证事实必然正确。
Agent 可能错误地认为自己已经完成查证,也可能引用质量很差的网页。更麻烦的是,它甚至可能生成一段很像引用的文字,让你误以为背后真的有证据。
因此,关键业务还需要三道防线。
1. 限制可接受的来源
建立来源优先级:
1. 官网、法规原文和正式技术文档;
2. 企业内部知识库与经过审核的数据库;
3. 可信媒体或专业机构;
4. 普通网页、论坛和社区讨论。
搜索摘要只能用于定位线索,不能直接当作最终证据。涉及政策时,应追溯到原始文件;涉及 API 参数时,应优先查看对应版本的官方文档。
2. 为高风险任务设置强制停止阈值
只要涉及金额、法律、医疗、权限、数据删除或生产环境修改,存在关键不确定项就强制返回 paused。
不要让 Agent 自己决定“问题应该不大”。风险阈值应由业务规则定义,并由工作流代码执行。
3. 保留完整核验记录
至少保存:
- 来源 URL;
- 页面或文档版本;
- 查询时间;
- 工具返回的原始内容;
- Agent 使用了哪段证据;
- 用户何时进行了确认。
这不仅方便人工复核,也能在答案出错时定位问题:究竟是来源错了、检索错了,还是模型理解错了。
最终应形成清晰的责任分工:
Prompt 负责行为规范,工具负责获取证据,人工负责高风险决策。三者不能互相替代。
---
今天就做一次同题对照测试
挑一个你经常交给 AI 的任务,例如查产品价格、分析竞品或生成执行方案。
先用原来的 Prompt 跑一次,再加入三段式模板跑一次。不要只比较谁写得更长、语气更像专家,而要重点检查:
- 它有没有真实来源;
- 有没有写明查询时间;
- 有没有把推断伪装成事实;
- 缺少关键条件时,是否愿意停下来。
想比较这套模板在不同模型上的执行效果,可以把基础版和进阶版 Prompt 放到 api.884819.xyz 接入的可用模型中,用同一道涉及最新信息的问题进行测试。
8848AI 平台内置 AI 对话功能,使用用户名和密码即可注册,不需要邮箱验证;没有月租和订阅,按量付费,Deepseek、千问等国产模型完全免费。
新用户注册即送体验token。不要只比较“谁回答得更像真的”,更要比较:谁更诚实地暴露了不确定性。
最后记住这条规则:
能查证的,不凭记忆;无法确认的,不装确定;影响结果的,不替用户做决定。
但这套模板只解决了“Agent 不确定时应该怎么说”。更棘手的问题是:当它声称“已经查证”时,我们如何确定它真的看过来源,而不是生成了一段看起来很像引用的文字?
下一篇,我们将继续拆解:如何给 Agent 设计一套可审计的引用格式,让每条关键结论都能追溯到原文、时间和具体证据片段。
本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#Agent #Prompt技巧 #AI教程 #人工智能 #大模型 #8848AI #AI学习