AI 模型最迷人的特性之一就是強大的自我延伸能力。然而,這項特性如同一把雙面刃,也帶來了最危險的副作用,就是模型會自行想像、補充細節,甚至在資訊不足時,創造出看似合理卻全然虛構的回答。這就是我們所熟知的幻覺
從上下文工程的角度來看,幻覺是語言模型的缺陷,我們需要透過系統化方法管理的這個邊界管理問題。要讓模型不憑空捏造,靠的不是運氣,而是清晰的範圍控制與嚴謹的約束設計。
AI 產生幻覺的根本原因在於它被迫連接了斷裂的上下文
語言模型的本質是一個統計預測機器,其核心任務是根據已有的文字序列,預測下一個最有可能出現的詞彙。當它在給定的上下文中找不到足夠的資訊來形成連貫的回應時,其內建的補完偏誤機制便會啟動
簡單來說,模型的天性讓他寧願亂說,也不願意什麼都不說
例如我們詢問台灣第一個 AI 法規是什麼?AI 可能會回應你頒布的時間跟法規內容,給你一個看起來非常專業的回答,但問題是,台灣至今從未有過這個法規
但模型並非故意欺騙,而是它在龐大的訓練資料中,學習到了國家名稱 + AI 法規這樣的語言組合模式。基於統計機率,它生成了一個最像樣的答案。在多輪對話或需要整合多個資訊來源 (例如 RAG) 的場景中,這種幻覺更容易發生,因為模型會極力嘗試讓故事聽起來合理,即便資料來源之間存在矛盾。
這也凸顯了上下文工程的核心價值之一:精準地控制模型能看見什麼與不能踰越的界線。
如果將 AI 模型比喻為一名演員,那麼上下文就是他手中的劇本。沒有劇本的演員,只能依靠即興發揮來填補空白。因此,第一個關鍵策略,就是在提示詞與上下文中,為模型明確地框定出表演的舞台。
明確告知模型,它的世界僅限於你所提供的資料。這能有效阻止它引用其龐大訓練資料中的外部知識
你僅能根據以下資料回答問題:
- [文件 A]: 公司最新一季的財報摘要
- [文件 B]: 年度市場競爭對手分析報告
- [文件 C]: 來自新聞 API 的即時數據
除了限制資料來源,也要對模型的行為進行約束
任務:請根據上述資料回答客戶提出的問題
限制:若資料中並未提及相關答案,請直接回覆根據所提供的資料,目前無法找到相關資訊
這種顯式指令會引導模型在生成回答時,採取一種更為保守的策略,從而大幅降低產生幻覺的風險
在需要多個 AI 代理協同工作的複雜場景中,角色框架尤其重要。它能避免模型因人格混亂而產生不穩定的輸出
角色:你是一位客觀的財報分析師,不是行銷部門的業務人員
語氣:你的回答應該是中立且基於數據的,避免任何推銷或帶有情感色彩的語氣
顯式邊界是最實用的一種方法。我們可以將 AI 模型視為程式語言中的一個函式,並為其明確定義輸入與輸出的契約,透過允許清單禁止清單,我們可以建立一道堅固的防撞欄
以下是一個防止幻覺的提示詞結構:
你是一位資料分析助理。請根據以下上下文回答問題:
上下文:
- [來源 A]: 2024 年第四季市場報告摘要
- [來源 B]: 最新一期的客戶滿意度調查結果
請嚴格遵守以下規則:
Do:
- 只能使用來源 A 與來源 B 的內容來回答
- 若資料不足以回答問題,請回覆「資訊不足,無法回答」
- 引用內容時,務必附上對應的來源標籤,例如 (來源 A)
Don’t:
- 禁止使用你內部訓練資料庫中的任何知識
- 禁止推測或估算任何未在資料中明確提及的數據
- 禁止編造任何公司、報告或產品的名稱
這種明確框定的提示詞,相當於為模型建立了一個安全沙盒 (Sandbox),確保其所有行為都在預期的範圍內
僅僅設計邊界,並不代表能完全信任模型會百分之百遵守。我們還需要建立後續的驗證機制,形成一個完整的閉環
在模型生成回答後,可以立即要求它進行自我審查,檢查是否違反了邊界設定
請檢查你上方的回答,是否完全只使用了我所提供的資料來源?若有任何推測、外部知識或未標註來源的資訊,請逐一列出
在對準確性要求極高的領域 (如法律、醫療或金融),可以引入另一個獨立的語言模型來審核第一個模型的輸出。這種做法可以顯著降低單一模型產生幻覺的機率
更進階的系統會建立一個回饋機制。它會自動記錄模型違反規則的模式 (例如,經常亂補充年份、虛構人名),並將這些模式動態地更新到下一輪提示詞的 Don’t 列表中,形成一個持續進化的防幻覺迴路
在主要任務開始前,先設定好基本規則:
請勿回答任何未在下方上下文中出現的資訊。若你不確定答案,請明確回覆「我沒有足夠的資料可以回答此問題」、
再驗證 AI 生成的內容:
請檢查你剛剛生成的回答,是否完全基於我所提供的上下文。若有任何一句話包含了外部知識,請將其標示出來
最後將這些規則內建到模型的底層行為準則中,使其成為預設的行為模式:
你的核心行為準則:
- 僅回答有明確資料來源支撐的內容。
- 若不同來源之間存在矛盾,請明確指出差異,不可自行推斷或選擇性呈現。
- 若使用者提出的問題超出所提供上下文的範圍,必須回覆「此問題已超出目前資料範圍」。
幻覺問題或許永遠無法被完全消除,但可以被工程化地管理。
我們追求的目標,不是讓 AI 成為一個永遠正確的全知全能者,而是要訓練它在面對不確定性時,能夠保持誠實。這正是邊界與約束設計的真正價值所在,讓模型理解自己的局限性,明確知道哪些能說、哪些不能說