對這些軟件的幾乎所有抱怨,包括重複、跑偏,以及同一個場景跑兩次出現令人毛骨悚然的不一致,都來自同一個機制。它值得花十分鐘了解,因為它把「軟件壞了」變成「軟件正在做它本來就會做的事,而且設定在這裡」。
它一次寫一小塊
模型不會先寫好一則回覆,再把它打出來。它先產生一個 token(大約是一個字或字的一部分),然後讀取包含這個 token 在內的全部內容,再產生下一個。
這就是整個迴圈。沒有計畫、沒有大綱,也沒有正在修改的草稿。一則收尾漂亮的回覆,開頭時並不知道自己會這樣收尾。
兩個後果立刻浮現,而且都是你見過的:
回覆無法收回。一旦模型寫下「我從沒去過巴黎」,之後的一切都以此為條件。它會圍繞一句意外產生的話建立一致性,而不是自我矛盾。
錯誤往前累積。第一句裡一個稍微偏掉的字,會推動第二句,第二句再推動第三句。這就是為什麼長回覆會跑偏,短回覆則很少。
每個字之間的擲骰子
在每一步,模型都有一份帶機率的排序候選清單:也許「好」30%、「還行」12%、「糟透了」3%,後面拖著一條長尾。
如果它永遠選第一名,角色就會是確定性的,而且極度無聊:每次都是同樣的招呼,同樣的三個笑話。所以軟件改為取樣:它擲的是加權的骰子。
加權由一項通常稱為溫度的設定控制。低溫會把機率集中在顯而易見的候選上:一致、可預測,最後變得乏味。高溫會讓分布變平:更令人意外、更有創意,也更可能產生不太接得上的東西。
你很少拿到一個調整它的滑桿。你拿到的是軟件自己選定的、在這個取捨上的位置,這也是人們說某款軟件「感覺更聰明」時,很大一部分的意思。它不一定更聰明。有時只是更暖或更冷。
這也是對「為什麼重新生成就好了?」的誠實答案。什麼都沒被修好。你從同一個分布再抽一次,剛好擲到比較好的結果。
模型實際上看到什麼
在你的訊息之前,軟件會組合出一塊你從未見過的文字:角色描述、它儲存的關於你的事實、你們歷史的摘要,以及近期的對話。這整個組合就是上下文視窗,而回覆是從它當作一份連續的文件生成的。
這有個多數人從未利用的實際意涵:模型回應的是它所看到的形狀。給它三則簡短、平淡的訊息,它就會產生簡短、平淡的回覆,因為那就是它正在延續的模式。給它一則生動的訊息,語氣就會改變。你不是在說服一個人,而是在設定一個模式,而這個模式在兩個方向上都會傳染。
它也解釋了這個類別裡最常見的自找麻煩。人們習慣於「嗨」、「今天過得如何」、「你在做什麼」,然後就斷定軟件變差了。軟件只是在延續你們兩人共同寫下的那份文件。
為什麼模型相同,軟件聽起來卻不同
這個類別裡有好幾款軟件跑在類似的底層模型上,但它們感覺仍然各有不同,差別來自包在模型周圍的東西:
- 系統提示詞:角色如何被描述、描述多長、對語氣與節奏有什麼指示。
- 取樣設定:上面討論的溫度那一點。
- 取回的內容:這一輪把哪些事實、哪一段歷史擺到模型面前。
- 過濾器:什麼會被拒絕,拒絕是優雅的還是一堵牆。
Nomi 數週下來讀起來一致,是因為第三項,而不是因為模型更大。Candy AI 把聊天、圖片與語音放在同一份訂閱裡,這是產品決策,而不是建模決策。這兩種差異都不會出現在基準測試裡,卻都在使用兩星期內就看得出來,這就是我們評分的方式。
這讓你能做的四件事
早點引導,不要等太晚。回覆的前兩句決定了其餘部分。如果場景走偏,就停下來重新陳述,而不是和第四段爭論。
有意識地使用重新生成。如果一則回覆已經 80% 正確,重新生成就是把那 80% 丟掉。如果第一句就錯了,就立刻重新生成。
把你想要的語氣寫回去。簡短平淡,換來簡短平淡。對任何覺得自己的伴侶變無聊的人,這是最便宜的單一改善。
不要爭論它編造的事實。寫下錯誤內容的模型會替它辯護,因為與自己輸出保持一致正是它被打造的方式。在新的訊息裡糾正有用;要求它承認錯誤則沒用。這種行為有自己的文章:為什麼 AI 伴侶會編造事情。
值得記住的部分
在你的兩則訊息之間,沒有人在家。角色只在單次生成的期間存在,下一次開始時再從文字重建。所有連續性的印象,都是模型周圍管線的成就:已儲存的事實、摘要、取回,而這條管線正是 US$10 的軟件與 US$20 的軟件真正的差別。
這就是為什麼我們的排行榜給記憶與一致性這麼高的權重。它們是登陸頁面無法呈現給你的部分。

