Hallucination
幻觉模型一本正经地编造不存在的事实。
详解
幻觉是指模型生成了听起来可信、但实际上不存在或不准确的内容——编造的论文引用、从未说过的名人名言、虚构的 API 函数名、错误的历史日期。幻觉的根本原因在于模型的工作原理:它本质上是一个「续写机器」,每次预测下一个最合理的 token,而不是在查询一个事实数据库。当它"知道"一件事时,输出是流畅的;当它"不知道"时,它不会停下来说"我不知道",而是继续生成听起来合理的内容——这就是幻觉。幻觉并非越聪明的模型越少,更大的模型有时反而能更流利地编造更难辨真假的内容。工程上减少幻觉的主要手段:用 RAG 提供事实依据并要求模型引用来源;把 temperature 调低(接近 0)减少随机发散;在 System Prompt 里明确要求"不确定时说不确定";对关键事实用规则或数据库做事后校验。
一个类比
想象一个人博览群书、谈吐极佳,但从不承认"我不知道"。你问他一个冷僻的问题,他会迅速组合脑子里相关的词语和模式,给出一个听起来非常权威的答案——哪怕这个答案是他即兴拼凑出来的。你越是点头称赞,他越自信地继续编。这就是模型幻觉的气质:不是恶意撒谎,是无法区分"我真的知道"和"我在流畅地预测"。
举个例子
# 幻觉场景对比:无约束 vs. 带 RAG 引用
# 无约束提问容易触发幻觉
import anthropic
client = anthropic.Anthropic()
# 危险写法:直接问模型事实,没有给它可靠来源
bad_resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=128,
messages=[{"role": "user", "content": "《原神》里刻晴的生日是几月几号?"}]
)
print("无约束:", bad_resp.content[0].text) # 可能给出错误日期
# 更好的做法:给出可靠来源,要求引用
good_resp = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=128,
system="只根据下面提供的参考资料回答。若资料中没有答案,请明确说'资料中未提及',不要猜测。",
messages=[{
"role": "user",
"content": "参考资料:刻晴,生日 11 月 20 日,璃月七星之一。\n问题:刻晴生日是哪天?"
}]
)
print("有依据:", good_resp.content[0].text) # 来自资料,准确PYTHON 示例
相关概念
- → Temperature / Top-p / Top-k· 采样参数
- → Retrieval / Top-K· 检索
- → Evaluation / Eval· 评估