語法約束解碼: 讓每個 token 都強制 LLM 輸出有效語法
LLM 會對語法產生幻覺,因為它們以機率方式採樣 token。語法約束解碼在每一步過濾詞表,只輸出保持語法有效性的 token。
讓 LLM 產生一個 JSON 物件,它最終一定會輸出一個末尾逗號、字串裡未轉義的換行符,或者在一個本該有引號鍵的位置輸出 bare word。這個錯誤不是模型的 bug。它是自迴歸採樣工作方式的必然結果:在每一步,模型都會把自己的詞表裡每個 token 都當作候選,包括那些會讓部分輸出在語法上 invalid 的…