
法條是真的。答案仍然違法。
我看過政府聊天機器人給出的第一個既自信又錯誤的答案,是關於 Section 8 住房補助券。
一位房東用白話問:他能不能拒絕用住房補助券付房租的房客。正確答案是不能。拒絕屬於紐約市行政法典 § 8-107(5) 下的收入來源歧視,市人權委員會可對故意違規處以最高 25 萬美元的民事罰鍰。這不是刁鑽題,而是已確立的法律。而在 2023 年 10 月,紐約市自己的 MyCity 機器人——跑在 Azure AI 上——卻告訴企業主與房東相反的答案。The Markup 於 2024 年 3 月記錄了此事:機器人說房東可以拒收補助券持有人、商店可以只收非現金、雇主可以抽走員工小費的一部分。每一個答案都違法,每一個答案又都掛著市政府的印記,出現在 .gov 網域上。
我打造 CivicCite,不是因為某個模型產生了幻覺。我打造它,是因為那些幾乎正確的答案;我想告訴你那個改變了我對整個問題看法的例子。若你想親眼看看它本身,它在這裡:veriprajna.com/zh-Hant/demos/government-municipal-ai。語料庫是一個合成但忠實的示範圖,並非法務建議。但機制是真實的,而機制才是值得爭論的部分。
令我難以忘懷的時刻,不是機器人捏造了一條法律,而是看著我自己的管線拉出了正確的法條,卻仍草擬出錯誤的答案。
我花了一整週,把檢索加在一個檢索碰不到的問題上
我一開始幾乎和所有 GovTech 人一樣,確信說謊聊天機器人的解方是更好的檢索。把實際的市政法規交給模型。讓每個答案都立基於真實條文。檢索增強生成——對「模型會瞎編」這標準恐懼的標準答案。故事乾淨、示範漂亮,而我相信它的時間比我該相信的更久。
然後我讀到史丹佛的數字,整個故事就垮了。Magesh 與同事在 2025 年透過 JELS 發表的研究中,測量了兩套正是這樣做的專用法務研究工具。Lexis+ AI 在 17% 的查詢上產生幻覺。Westlaw 的 AI-Assisted Research 在 33% 的查詢上產生幻覺。這些不是玩具聊天機器人,而是先檢索法條、再生成答案的系統,由整個生意就是要把法律搞對的公司打造。第二套工具大約每三個答案就有一個仍然是錯的。檢索改善了草稿。它並沒有讓答案安全到可以放行。
我想誠實說出那是什麼感覺,因為我剛花了一週打造同樣的架構,還自覺很聰明。我的管線把市民的問題拆成原子化的法律子問題,從市政法規圖檢索候選條文,並約束模型只能根據檢索到的內容草擬。在 Section 8 那個問題上,它直到最後一步之前都做對了。它找到了 § 8-107(5)。正確的法條。它拉出了關於合法收入來源的精確文本。然後它草擬出一句話,大意是:是的,你可以拒絕補助券。
對的法律。錯的答案。疊在同一份草稿裡。
檢索把正確的法條交到模型手裡。它完全阻止不了模型把那條法條讀反。
那一週,問題的形狀在我眼前變了。我一直把幻覺當敵人,而幻覺確實存在,但它是你能想像抓得到的失敗。真正把 MyCity 那些答案送出去的失敗更細微、也更糟:引用了正確的條文,卻陳述了錯誤的結論。句中毫無捏造。沒有任何東西能被「你是不是瞎編的」過濾器抓到,因為什麼也沒被編出來。只是對擺在眼前的法律做出自信的誤讀。那種失敗模式對檢索是隱形的,因為檢索只檢查法條是否在場,從不檢查句子是否把法條讀對了方向。
哪個更糟:捏造的法律,還是讀反的真實法律?
我不斷回到這個問題,而我的答案越來越確定。捏造的法律是比較安全的失敗。
想想市民對兩者會怎麼做。明顯捏造的法條讀起來怪,引用一個解析不到的法典章節,感覺不對勁。讀反的真實法條卻讀起來完美。它有真實的引用。那個章節存在。房東讀到「是的,你可以拒絕補助券」,看到附上的真實法典編號,就照做了。於是出現非法拒絕、帶歧視主張的房客,以及一條指回政府答案的書面軌跡。引用的正確性,正是錯誤結論之所以危險的原因。它是壞建議乘著進來的那張通行證。
所以我最在意的檢查從來不是「這個引用是不是真的」,而是「這個引用是否真的支撐這句話」。在管線裡,這個檢查是蘊涵:給定草擬的主張與被引條文的精確文本,文本是蘊涵該主張、與之矛盾,還是兩者皆非。在 Section 8 那份草稿上,模型的「可以」被 § 8-107(5) 判定為矛盾,因為條文明白說的是相反的事。草稿死在那裡。存活下來、最終被閘門放行的,是修正後的主張:房東不得拒絕,而這就是這麼說的法條。

我堅持的一點——也是那個畫面存在的原因——是蘊涵不是你必須相信的黑箱。你可以打開 Verify 階段,讀它的原始輸入與輸出:草擬的主張、用來核對的法定文本、標籤,以及以條文原文寫成的理由。無法檢視的裁決不是驗證。它只是製作水準更高的第二意見。 我早已用昂貴的方式學到:叫一個模型去裁判另一個模型,只會讓你得到兩個模型達成一致——這件事比看起來更弱。
最終奏效的一步,是停止試圖讓模型變得可信
我記得那個確切的重構,因為當時感覺像放棄,結果卻成了整個設計。我不再試圖讓模型可信,而是開始讓它的可信度變得無關緊要。
轉變是這樣的。CivicCite 裡的語言模型是顧問。它拆解問題、草擬候選答案、提出蘊涵意見。它從不獲准放行任何東西。坐在代理框架之外、用普通的確定性 Python 寫成的,是我稱為法定決策閘門(Statutory Decision Gate)的東西;它只有在四個條件同時成立時才放行一個子答案:引用存在、條文現行有效、被引文本蘊涵該主張,且沒有任何東西與之衝突。缺任何一項,答案就不送出。其中兩項檢查是純粹的算術與邏輯。現行有效是日期比較:條文沒有廢止日期,且其生效日期在基準日當天或之前。衝突是圖讀取。沒有提示詞、沒有溫度、也沒有說服的空間。

我現在常說兩句話。一句是代理提供建議,閘門做決定。 另一句是:無論草稿多有自信,LLM 都無法把自己投票過閘門。這比聽起來更重要,因為這整個領域最誘人的失敗,就是讓模型給自己的工作打分,再把那個分數叫做「驗證」。草擬答案的模型,不能是證明答案安全的那個東西。閘門刻意比模型更笨,也刻意在模型之外——這正是全部的重點。智能提出。程式定奪。
模型是好的寫手,卻是壞的法官。所以我讓它寫,從不讓它裁決。
示範對自己的邊界很誠實,我也會一樣。語料庫是市政法規的合成但忠實圖,由真實條文改寫而來,不是正式紀錄來源。311 升級路由會計算並顯示,但接到真實案件系統的連接器尚未接上。受約束的草擬使用允許清單驗證器與一次重問,而不是生產級的 token 級解碼。真實的是決策邏輯,而決策邏輯才是產品。
為什麼我信任沉默,勝過信任一個好答案
我沒預期會為示範拒絕回答而自豪,而現在那是我最喜歡它做的事。最清楚的例子是一輛餐車。
一名攤販問:在一般攤販停車規則下,他能不能把車整天停在計費車位。普通助理開心地給出錯誤答案,把一條規則當現行有效來引用。CivicCite 也草擬了一個候選,而候選引用的停車條文已被廢止。接著現行狀態檢查跑起來。條文有廢止日期。現行有效失敗。閘門並不退回某條相鄰規則然後唬弄,而是扣留答案,把問題標為超出已驗證涵蓋範圍,並把部分發現附上,轉交給一個實際的部門。

在政府網域上的錯誤答案不是尷尬。它是掛著名市政府名字的法律責任。
看看那個畫面拒絕做什麼。它不從一條已死的法條合成一個看似合理的答案。它用白話說:唯一處理此事的條文已被廢止,目前沒有現行有效的條文管轄這個問題,並把市民轉交出去,而不是猜測。誠實棄權勝過自信的錯誤答案,在政府尤其如此。 而在政府,攸關的不是聲譽。政府的法律建議落在專有職能區域,這意味著當答案結果是錯的時,沒有主權豁免的盾牌可以躲。
這已不再是假設性的擔憂,也是我為什麼現在就打造這東西、而不是以後的原因之一。2026 年有 78 項與聊天機器人相關的法案橫跨 27 個州。紐約的 S7263 於 2026 年 2 月 26 日到達參議院議場。歐盟 AI 法案附件 III 的高風險義務於 2026 年 8 月 2 日開始可執行,罰則最高可達 1,500 萬歐元或全球營業額的 3%。監管問題正從「你的 AI 有沒有幫助」轉向「你能不能證明你的 AI 被允許那麼說」。你可以為沉默辯護。你無法為一個自信的錯誤答案辯護。
監管者真正能據以行動的那個數字
我以前以為這類系統的頭條指標是幻覺率,現在則認為那個直覺正好反了。百分比是交給監管者的錯誤東西。
想像你是市法務部門——答案出錯時承擔法律責任的那個辦公室。「我們的聊天機器人只有 4% 的時間產生幻覺」並不令人安心。它是在承認:每一百位市民中有四位拿到掛著市政府權威、背後卻什麼也沒撐住的答案。有意義的數字不是模型出錯的頻率,而是是否曾允許任何未驗證的東西出門。所以我圍繞著這個指標打造基準:在一個固定、已標註的 12 查詢黃金集上,跑真實管線,統計在沒有已驗證、現行有效的法定依據下被放行的答案數量。目標是十二分之零。
幻覺率告訴監管者你失敗的頻率。它無法告訴他們你有沒有抓住它。

我想精確說明那個數字是什麼、不是什麼,因為過度宣稱它會背叛整個前提。它是固定已標註集合上的結果,不是開放世界保證,也不是「零幻覺」——我認為沒有誠實的人該賣那句話。模型仍會草擬不完美的主張。重點是未驗證的被扣留,而不是它們從不被草擬。與那個數字並列的還有兩個:100% 稽核紀錄涵蓋——無論放行或拒絕,每個查詢一份可歸檔紀錄——以及與已標註真實標籤的處置一致。純 RAG 基線——沒有閘門的 MyCity 架構——會在同一集合上送出那些已記錄的非法答案。那個比較是上下文,不是頭條。
紀錄是我會最用力捍衛的部分。

每個查詢——無論放行或拒絕——都會產生一份法定決策紀錄:處置結果、引用、全部四項檢查結果、決策,作為你可以歸檔並重跑的結構化資料。它點名 NIST AI RMF 日誌記錄以及 FedRAMP 與 StateRAMP 持續監控,作為它所朝向的標準。我對那句話很謹慎。朝向是方向,不是認證,我不會宣稱 CivicCite 已對其中任何一項取得認證。但稽核者不想要模型很聰明的承諾。稽核者想要一份按互動產生的紀錄,精確顯示為什麼一個答案被允許存在,而且形式能在有人想拆穿它時仍然站得住。可重現性把決策變成證據,而證據是監管者能據以行動的東西。
若你寧願看它運作,而不是讀我描述,這裡是整個示範從頭到尾跑起來。
我留下的那個問題
我不斷回到一件事:自己的反應讓我意外。第一次看 CivicCite 拒絕一個問題並轉交部門時,我心裡有一部分把它讀成系統失敗。
它並沒有失敗。它在做自信的機器人做不到的那一件事:知道自己能證明到哪裡,並停在那裡。我花了太久優化好答案,以致悄悄假定好答案就是目標。它不是。在政府,目標是一個站得住腳的答案,而這兩個詞之間的距離,就是這個產品存在的全部理由。站得住腳的答案有時看起來像放行的引用。同樣常見的是看起來像轉交的問題與歸檔的紀錄。
所以我想留給任何為政府打造或採購 AI 的人的問題,不是「你的模型有多準」。更好的模型會繼續更擅長寫出流暢、在脈絡中卻錯誤的答案,因為流暢從來不是缺的那一塊。我在任何東西離開閘門之前問的問題更窄、也更難。你能不能此刻證明,這個確切答案能追溯到一條存在且現行有效的法條,而那份證明能不能在想讓它失敗的法庭上站得住?如果答案是否,模型再好也無關緊要。系統應該保持沉默。 無論哪種結果,你都可以在這裡看它決定:veriprajna.com/zh-Hant/demos/government-municipal-ai。
信任不屬於一個你必須相信的模型。它屬於你可以稽核的程式碼。


