Agent 確認了退款、把 ticket 標記為已解決,然後從頭到尾沒呼叫過退款 API。流暢、自信——而且完全搞錯了一件從未發生過的動作。這份指南的核心主張:LLM 幻覺無法消除,只能治理——任何賣你「零幻覺」的供應商,賣你的是一場 demo。
這裡有一個一再重複的模式:團隊推出一個 LLM 功能、在正式環境看到一個幻覺答案、然後用換模型來回應。三個星期後,另一個幻覺。然後是 prompt engineering。然後是 RAG。然後是一個「guardrail」產品。每一步都感覺像進展;每一步都在治療一個沒有幻覺預算、沒有偵測層、沒有緩解政策的系統的症狀。
這份指南提出另一個觀點:幻覺是受治理的風險,不是可以修好的 bug。正式環境的答案是三層框架——偵測、防範、緩解——搭配一套把幻覺率當成 SLO、而不是醜聞來對待的監控預算。我們會涵蓋說明「只換模型」為什麼會失敗的基準測試資料、框架各層與它們的成本、讓治理具體化的預算數字、以及反方論點——因為「換個模型就好」值得一個真正的答案。
為什麼三層框架勝過銀彈
重點:每一個單點「解法」——更好的模型、更多的 prompting、RAG——只覆蓋一類失敗,把其他類別原封不動留著。
證據基礎是公開的,而且持續成長:像 Vectara 的幻覺排行榜 這樣的獨立排行榜,在摘要幻覺上量測模型家族,而 Presenc 的 2026 基準測試研究 跨任務類型追蹤整個領域。資料一貫顯示的:
- 幻覺率取決於任務,不是取決於模型。 在摘要上幻覺最少的模型,在程式或抽取上可能只是中段班。「換成最好的模型」預設存在一個最好的模型,而基準測試裡沒有。
- 模型之間的差距是真的,但有界。 前沿模型之間在大多數任務上只有個位數的差異——與預算模型的差距更大。選模型會移動比率;不會把它歸零。
- 幻覺有子類型,需要不同的處理。 捏造(無中生有的事實)、矛盾(對話中途改變事實)、以及動作幻覺(聲稱做了一件沒做的事)。RAG 處理捏造的來源;對動作幻覺毫無作用。Prompting 處理風格錯誤;對事實捏造毫無作用。
每一顆銀彈的失敗模式都一樣:它最佳化一個子類型,把監控盲點原封不動留著——這就是下一個幻覺以驚喜之姿出現的方式。
這代表什麼:偵測、防範與緩解
重點:三層,各有明確的工作與可量測的成本——而且這些層不是可選的附加物,它們就是架構。
第 1 層——偵測。 你看不到的,就無法治理。偵測選項,依成本排序:在抽樣子集上做 LLM-as-judge 評估(最便宜也最常見)、專門的幻覺偵測器、自我一致性檢查(生成兩次、互相比較)、以及強制引用(要求來源、驗證來源)。每一個都有延遲與成本輪廓;抽樣率就是預算旋鈕。這一層背後的 eval 紀律,是把 CI 式評估從「只在上線前」改成持續套用。
四個選項,連同真正決定選擇的取捨:
| 選項 | 檢查什麼 | 增加的延遲 | 增加的成本 | 最適合 |
|---|---|---|---|---|
| LLM-as-judge(抽樣) | 輸出對照任務評分標準 | 離線、batch | 最低 | 大多數正式環境流量 |
| 專門偵測器 | 事實一致性評分 | 10-100ms | 低 | 摘要管線 |
| 自我一致性 | 生成兩次、互相比較 | 2× 生成時間 | 2× tokens | 高風險的單一答案 |
| 強制引用 | 來源存在且相符 | 檢索 + 驗證 | 中 | 有 grounding 的功能 |
Judge 迴圈,最簡單的正式環境形式:
import random
import re
from openai import OpenAI
client = OpenAI()
SAMPLE_RATE = 0.05 # 5% of traffic; raise toward 1.0 for high-risk features
def maybe_judge(question: str, answer: str, rubric: str) -> float | None:
if random.random() > SAMPLE_RATE:
return None
verdict = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content":
"Rate 0-10: is the answer factual per this rubric? "
"Reply with a single number.\n"
f"Rubric: {rubric}\nQ: {question}\nA: {answer}"}],
)
match = re.search(r"(\d+(?:\.\d+)?)", verdict.choices[0].message.content)
return float(match.group(1)) if match else None
第 2 層——防範。 在生成之前降低比率:用檢索或即時資料做 grounding(本系列 grounding 指南涵蓋實作)、用 structured-output 模式做受約束的解碼、上下文衛生(你送什麼進去,它才能跟什麼矛盾)、以及任務-模型配對(別叫預算模型推理超過它的等級)。RAG 屬於防範——而且只屬於事實查找這一類失敗。
第 3 層——緩解。 當錯誤答案無論如何還是會上線(它一定會),系統必須優雅地劣化:帶有拒絕路徑的信心評分、fallback 鏈到第二個模型或人工(自訂路由 讓 fallback 變成設定)、以及把偵測到的失敗回饋進 eval set 的回饋迴圈。緩解是讓幻覺從事件變成遙測點的層。
這對你的正式環境預算代表什麼
重點:治理是預算,不是政策——抽樣率、閾值與警示讓框架具體化,也讓 CFO 開心。
框架的營運轉譯:
- 依風險決定抽樣率。 低風險功能(摘要、分類):對 1-5% 的流量抽樣做 judge 式偵測。高風險功能(醫療、法律、金融、agent 動作):100%,在適用的地方加上每請求引用檢查。抽樣率就是成本旋鈕——偵測之所以便宜,正是因為它是抽樣。
- 閾值與警示。 為每個功能定義幻覺率 SLO(數字取決於你的任務與風險類別——排行榜是「什麼做得到」的參考)。對比率發出警示,不要對個別錯誤答案警示;個別答案交給回饋迴圈。
- 模型選擇作為治理輸入。 模型目錄與基準測試資料一起決定你治理的基礎比率——任務配對的選擇是最便宜的防範層,而且會跟其他一切層層放大。
預算的形狀:5% 抽樣率的偵測,通常讓你的 API 帳單增加個位數百分比;防範在生成時不增加任何成本(grounding 與路由是設定);緩解偶爾花一次拒絕或 fallback。治理是 LLM 技術棧裡最便宜的可靠度投資之一——正式環境最佳化文件涵蓋周邊技術棧——這就是為什麼它的缺席如此顯眼。
一個實際的預算範例。 假設一個功能每天在前沿分層跑 100,000 次呼叫。抽樣 5% 做 judge 式偵測:5,000 次 judge 呼叫,每一次約為主呼叫的五分之一成本——帳單增加約 1%,換來全額的可見度。把 SLO 設在 eval set 基準線的 p90(例如「過去一週幻覺率低於 3%」),然後在滾動比率超過時發出警示。一個高風險的 agent 動作功能,值得 100% 抽樣與更嚴的 SLO。抽樣旋鈕就是你用小錢換信心的方式。
反方論點:「換個模型就好」與其他迷思
重點:四個流行的答案,每個都有一個資料形狀的洞。
- 「換成旗艦模型。」 排行榜顯示旗艦模型不是每個任務都最好——而且旗艦的比率雖然較低,仍然不是零。換模型會移動基礎比率;不會移除偵測與緩解的需求。
- 「RAG 解決它。」 RAG 處理檢索 grounded 的事實。它碰不到動作幻覺、在語料庫本身錯誤時沒有幫助、而且帶來它自己的失敗類別——檢索到一個看似合理的錯誤 chunk。我們的 RAG 指南 記錄了兩個方向。
- 「Prompt engineering 會修好它。」 Prompt 塑造風格與結構,不是事實性。Prompt engineering 指南把界線說得很清楚:更好的 prompt 讓輸出更乾淨,不會更真實。
- 「比率很低,我們不需要監控。」 低比率 × 高流量 = 保證出事件。每天 10,000 次呼叫、99.5% 準確率,就是每天 50 個錯誤答案——而「比率很低」正是那個需要監控來驗證的主張。
常見問題
幻覺能完全消除嗎?
不能——任何聲稱零幻覺的供應商,描述的都是 demo。正式環境的目標是一個受治理的比率:偵測、能防範就防範、上線時緩解。這份指南的框架就是治理被建立起來的方式。
哪個模型幻覺最少?
依任務而定,這是排行榜說的——摘要冠軍不一定是程式冠軍。依任務選擇,並用你自己的 eval set 在你的資料上驗證,因為你的任務分布才是重點。
幻覺偵測要花多少錢?
用 LLM-as-judge 做 5% 抽樣,偵測通常讓你的 API 帳單增加個位數百分比。100% 抽樣的高風險功能花更多——但那就是風險類別的價格,而且仍然比事件便宜。
RAG 能阻止幻覺嗎?
它處理事實查找這類失敗——在已知語料庫上的 grounded 答案。它不會阻止動作幻覺或語料庫衍生的錯誤,而且檢索會帶來它自己的失敗模式。是防範層,不是銀彈。
什麼是實際的幻覺率 SLO?
從你自己的 eval set 與你任務類別的公開排行榜設定——對大多數正式環境任務來說,在有偵測的情況下,個位數是做得到的;低於那個數字是治理決策,不是模型屬性。
怎麼專門偵測動作幻覺?
驗證動作,不要驗證文字:檢查工具呼叫是否真的執行了、狀態是否如聲稱的那樣變了。文字型 judge 看不到動作——agent 框架的執行日誌就是這個子類型的偵測層。
總結
LLM 幻覺是受治理的風險:用抽樣偵測、用 grounding 與任務配對防範、用拒絕與 fallback 緩解——搭配一套讓治理具體化的監控預算。換模型會移動基礎比率;框架才是把幻覺從事件變成遙測點的東西。建立分層、設定 SLO,下一個幻覺就會變成一個資料點,而不是一個驚喜。
把這份框架存起來——當你設定自己的幻覺 SLO 時,我們連結的排行榜是參考點,你的 eval set 是仲裁者。追蹤我們的部落格,在新的模型家族推出時每季更新基準測試資料。那個框架就是把辯論變成你可以操作的儀表板的東西。