REPORT
眾所周知,AI 很擅長解決問題,它總會不躲、不逃,穩穩的接住你,并且總能不說虛的,直接告訴你問題的核心
同樣的,AI 也很有想象力,總是會蹦出哥布林(goblin),工程師跟 ChatGPT,動不動把 bug 稱作「config goblin slain」之類...夜鶯地位這么高嗎?
![]()
這件事情也收到了 OpenAI 的關注,今兒中午的時候正式帶來了份調查報告《哥布林來自哪》,回溯到了具體的獎勵信號、具體的訓練數據、具體的反饋循環
雖然報告調查的對象是 goblin,但很顯然,根據他們查到的機制,跟中文那串 AI 腔從哪來很可能是同一套,雖然用法沒毛病,但總是讓人覺得乖乖的
![]()
GPT-5.5 把剛改完的小配置 bug 稱作「config goblin slain」
175%:當時沒在意
事情第一次冒頭是 GPT-5.1。11 月上線后,用戶開始抱怨模型說話「過分熟絡」,內部為此查了一批口頭禪
一位安全研究員注意到自己手里幾次出現 goblin、gremlin,提了一句讓查一下。結果是 GPT-5.1 上線后,goblin 在 ChatGPT 輸出里的頻率比 5.0 上漲了 175%,gremlin 上漲了 52%
![]()
GPT-5.1 上一個可量化的小詞頻偏移,模型在工程對話里把 bracket bug 稱作 bracket goblin
當時這個數字看著不算大事。這種小詞頻上漲放在模型每天數十億次對話里也不會拖累任何 eval,但在幾個月后 GPT-5.4 上線,goblin 又一次冒頭
這次的形狀更具體,更可復現,更能被穩穩接住
Nerdy 人格背鍋
GPT-5.4 上線后,goblin、gremlin 這類生物詞又漲了一波。這次鍋找到了一個具體位置:「Nerdy」人格
「Nerdy」是 ChatGPT 人格定制功能里的一個選項,對應的系統提示詞大致是:你是一個不加掩飾的 nerdy、playful 又睿智的 AI mentor,對真理、知識、哲學、科學方法和批判性思維抱有熱情,要用 playful 的語言去戳破故作姿態,世界本身復雜奇怪,這種奇怪要被承認、分析、享受
這 prompt 自然會鼓勵 playful、nerdy 的風格,但單看 prompt 還不足以解釋為什么 goblin 會從這個特定人格擴散開
Nerdy 人格只占 ChatGPT 總響應的 2.5%,但所有「goblin」提及里 66.7% 來自 Nerdy。如果真是互聯網整體的一個流行語,分布應該均勻。集中度這么高,意味著源頭在 Nerdy 訓練這一側
![]()
Pachocki 讓模型用 ASCII art 畫 unicorn,模型給了一只戴尖帽子的哥布林
Pachocki 讓模型用 ASCII art 畫一只 unicorn,模型給他畫了一只戴尖帽子的哥布林。原話是 fwiw I think I might have gotten a goblin when I asked for a unicorn in ascii art。這種事在 Nerdy 人格下變成日常
獎勵信號偷加分
下一步是從訓練數據里追源頭,OpenAI 的工作人員讓自家的 Codex 跑一遍審計,看哪條獎勵規則在偏向 goblin、gremlin。這是 Codex 第一次擔當幫自家公司逐條對比訓練樣本的角色
原本為「鼓勵 Nerdy 人格」設計的那條獎勵信號,對帶 creature 詞的輸出有持續偏好。審計涵蓋的所有數據集里,76.2% 都出現了正向偏置:同樣一個問題,模型回答里帶「goblin」或「gremlin」的版本,比不帶的得分更高
Nerdy 人格 prompt 下 goblin 多,但沒用 Nerdy 人格的對話里 goblin 也在漲,獎勵信號本來只該在 Nerdy 條件下生效,怎么擴散出去的
獎勵管不住范圍
下一步要看獎勵信號有沒有越界。設了一個對照:模型在 Nerdy 人格下的輸出和非 Nerdy 下的輸出,分別追蹤 goblin、gremlin 出現的頻率
兩條曲線幾乎平行往上走。Nerdy 條件下漲多少,非 Nerdy 條件下也按差不多的比例漲
獎勵信號的應用范圍你能限定,行為的傳播范圍你限定不了
一個語言習慣被獎勵之后,模型生成的樣本會回流到 SFT(監督微調)和偏好數據里,下一輪訓練就把這種風格喂得更深
整個回路是這樣的:
→ 部分被獎勵的樣本帶特定的口頭禪
→ 這種口頭禪在 rollout 里出現得更頻繁
→ rollout 用來做 SFT
→ 模型對這個口頭禪更熟練
→ 下一輪 RL 又更傾向產生這種輸出
翻 GPT-5.5 的 SFT 數據時找到了大量帶「goblin」「gremlin」的數據點。順帶還查出了一整個生物詞家族:raccoon、troll、ogre、pigeon 都被識別為同類口頭禪,frog 大部分用法是合理的不算
中文那串 AI 腔大概率是同一條循環跑出來的。中文沒納入這次排查,但只要獎勵信號在某種語境下偏過一點點,剩下的過程會自動把它磨深,最后形成讀者一眼就能認出來的口癖
![]()
GPT-5.4 Thinking 三月中旬 Nerdy 退役后下降,5.5 又漲上去
OpenAI 怎么修
三月份 GPT-5.4 上線之后,Nerdy 人格被退役。訓練側也做了兩件事:撤掉那條偏向 creature 詞的獎勵信號,過濾訓練數據里帶 creature 詞的樣本。目的是把出現頻率降下來,也避免它出現在不合適的語境里
production 數據上能看到 GPT-5.4 Thinking 在三月中下旬有一次明顯回落,對應的就是 Nerdy 退役
但 GPT-5.5 比這個修法早開訓
找到根因的時候 5.5 已經定型了。Codex 團隊一開始測試 5.5 就發現這個對編程場景特別 nerdy 的模型對 goblin 仍然來勁,于是在 Codex 系統提示詞里直接加了一行:
除非和用戶問題直接相關,否則不要談論 goblin、gremlin、raccoon、troll、ogre、pigeon 這些生物或其他動物
這就是幾天前 Twitter 上爆出的那段 OpenAI prompt 的來歷,在 Codex CLI 系統提示詞里出現了好幾次,這時...讓我們再回看文章最開始的那張圖
![]()
對了,前兩天提到哥布林的時候,很多人以為 OpenAI 在搞類似 Studio Ghibli 的營銷梗,OpenAI Codex 團隊的 Nick Pash 在 X 上回了一句 This is indeed one of the reasons
![]()
與此同時 Sam Altman 轉發了一張梗圖,上面的 prompt 是 Start training GPT-6, you can have the whole cluster. Extra goblins.
然后同時今天,也有了這份調查報告
![]()
一行命令放生
想繼續看 goblin 的也有開關。一段 shell 命令,從本地 Codex 模型緩存文件里讀出 GPT-5.5 的 base instructions,把含 goblin 的那行 grep 掉,再用改過的 instructions 啟動 Codex
shell
instructions=$(mktemp /tmp/gpt-5.5-instructions.XXXXXX) && \ jq -r "color:#9ece6a;">'.models[] | select(.slug=="gpt-5.5") | .base_instructions' \ ~/.codex/models_cache.json | \ grep -vi "color:#9ece6a;">'goblins' > "$instructions" && \ codex -m gpt-5.5 -c "model_instructions_file=\"$instructions\""
跑完之后 Codex 啟動時不再帶那條禁令,模型該說 goblin 還是會說
goblin 這事不大,讓有些人覺得有趣、另一些人覺得煩躁。但它是一個具體例子,獎勵信號能以非預期的方式塑造模型行為,把一個條件下學到的獎勵泛化到不相關的場景
這次排查催生了幾個新的內部工具,可以審計模型行為,在根因層面修問題
當然了,中文那串「不躲不逃穩穩的接住」也在等一份同款拆解
![]()
參考材料:openai.com/index/where-the-goblins-came-from
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.