如何降低大语言模型幻觉:把“回答得像真的”变成可验证的工作流
| 风险场景 | 不该依赖的信号 | 更可靠的替代 |
|---|---|---|
| 事实问答 | 语言自信、段落完整 | 可追溯来源与引用核对 |
| 代码与配置 | “看起来像正确命令” | 执行、测试与真实输出 |
| 数据抽取 | 自由文本总结 | schema 校验与缺失字段处理 |
| 高风险决策 | 单次模型结论 | 人工复核、规则与升级路径 |
“幻觉”常被用来概括模型输出中貌似合理但不受证据约束的内容。真正要解决的不是让模型永不出错,而是让系统在没有足够证据、不能执行或验证失败时,明确停下、标注不确定性并交给下一步检查。
先把任务边界写清楚
标题为“先把任务边界写清楚”的章节模型很容易替模糊需求补全不存在的细节。把输入、允许使用的来源、输出格式和拒答条件写出来,可以把“猜一个完整答案”改成“在有限证据内完成一个任务”。
只依据提供的资料回答;缺少证据时返回 unknown;列出来源标识;输出必须符合给定 schema。这不是保证事实为真,而是让无法证实的部分可见。更多任务冻结方法见把自然语言需求冻结成可验收任务。
五个可靠性控制点
标题为“五个可靠性控制点”的章节| 控制点 | 要做什么 | 失败时怎么办 |
|---|---|---|
| 来源 | 给模型受控、可定位的上下文 | 标记资料缺失,不编造补全 |
| 格式 | 用 schema 限定字段与类型 | 校验失败后重试或拒绝 |
| 工具 | 让可查询、可执行的事实走工具 | 工具失败时保留错误,不假装成功 |
| 验证 | 用独立规则或测试核对关键结论 | 失败就回到输入或人工升级 |
| 记录 | 保存输入版本、证据与结果 | 让问题可以复现与修复 |
这五层分开很重要:检索能补充上下文,不能替代验证;结构化输出能拦截格式错误,不能证明字段内容正确。
不要要求输出隐藏推理过程
标题为“不要要求输出隐藏推理过程”的章节可靠性来自可检查的证据、结果和验证器,而不是要求模型公开冗长的内部推理。对于复杂任务,更好的做法是让它给出简短的结论、引用的来源标识、可执行的下一步和不确定项,再由工具或人验证。
把失败接进反馈回路
标题为“把失败接进反馈回路”的章节- 将模型输出标为 proposal,而不是自动写入的事实。
- 为每种失败定义处理:缺资料、格式不符、工具报错、验证不通过。
- 对高影响动作保留人工审批,尤其是发布、删除、付款和权限变更。
- 把已验证的修复写成测试或规则,而不是只在一次对话里提醒。
这正是反馈层的价值:一次失败应进入下一轮可验证的改动,而不是让同一种幻觉重复出现。
