Record how far the coding output departs from its stated contract
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,165 @@
|
|||||||
|
# LLM 輸出的契約查核
|
||||||
|
|
||||||
|
(2026-08-06 量測。對象為步驟 3 的三份執行歸檔
|
||||||
|
`runs/03-code/run1`–`run3`,共 883 首歌、44,149 筆標籤
|
||||||
|
指派、44,146 句引述。歌詞以模型實際看到的那一份為準,即
|
||||||
|
`tools/instance/llm-input-code.jsonl`。)
|
||||||
|
|
||||||
|
定義檔 `prompts/03-code.md` 對輸出下了四條明確要求:只用
|
||||||
|
給定的碼且拼寫照給、每個標出的碼恰引一行歌詞、引述逐字、
|
||||||
|
輸出為合法 JSON 且無其他文字。本檔記錄這四條各自被遵守到
|
||||||
|
什麼程度。
|
||||||
|
|
||||||
|
## 詞彙表的遵守
|
||||||
|
|
||||||
|
詞彙表為 101 個碼。三次執行共出現 **13 筆詞彙表外的碼**,
|
||||||
|
分屬 8 個字串:
|
||||||
|
|
||||||
|
| 字串 | 出現次數 |
|
||||||
|
|---|---|
|
||||||
|
| `alcohol-and-substance-use` | 6 |
|
||||||
|
| `sacrifice` | 1 |
|
||||||
|
| `travel-and-adventure` | 1 |
|
||||||
|
| `reputation-and-gossess` | 1 |
|
||||||
|
| `sacrifice-and-surrender` | 1 |
|
||||||
|
| `guilt-and-remorse` | 1 |
|
||||||
|
| `warning-and-danger` | 1 |
|
||||||
|
| `manipulation` | 1 |
|
||||||
|
|
||||||
|
其中兩個字串像是拼寫失誤(`alcohol-and-substance-use`
|
||||||
|
之於 `alcohol-and-substance-abuse`、`reputation-and-gossess`
|
||||||
|
之於 `reputation-and-gossip`),其餘六個看來是模型另行造出
|
||||||
|
的碼。
|
||||||
|
|
||||||
|
`alcohol-and-substance-use` 通過了多數決兩次——song-500
|
||||||
|
兩票、song-750 三票——因此未經處理的計票會在定案表寫出
|
||||||
|
第 102 個碼。
|
||||||
|
|
||||||
|
**拼寫失誤的機制有紀錄可循。** 輸出依字母序排列,錯拼的鍵
|
||||||
|
落在正確鍵該在的位置,其值為空陣列,而正確的鍵在同一份
|
||||||
|
輸出的稍後處重新出現、帶著引述:
|
||||||
|
|
||||||
|
```
|
||||||
|
song-500 run1: -use=[] -abuse=["Smokin' the Zaza, ..."]
|
||||||
|
song-500 run3: -use=[] -abuse=[同一句]
|
||||||
|
song-750 run3: -use=[] -abuse=["I got a thing for the hard
|
||||||
|
liquor on ice"]
|
||||||
|
```
|
||||||
|
|
||||||
|
模型寫錯後綴、已輸出的 token 收不回,遂以空陣列收束該鍵,
|
||||||
|
再於正確的鍵補上引述。song-750 的 run1 與 run2 則整筆使用
|
||||||
|
錯拼的鍵並附上引述,故該首的三票分裂於兩種拼寫之間。
|
||||||
|
|
||||||
|
## 引述的存在
|
||||||
|
|
||||||
|
三次執行共 **3 筆空引述**,全部是上述錯拼的鍵所留下的空
|
||||||
|
陣列。其餘 44,146 筆指派皆附引述。
|
||||||
|
|
||||||
|
## 引述的逐字性
|
||||||
|
|
||||||
|
逐層放寬比對,每一層新命中的數量:
|
||||||
|
|
||||||
|
| 層 | 判準 | 筆數 | 佔比 |
|
||||||
|
|---|---|---:|---:|
|
||||||
|
| 1 | 完全逐字為歌詞的子字串 | 43,098 | 97.63% |
|
||||||
|
| 2 | 加上標點形態正規化 | 461 | 1.04% |
|
||||||
|
| 3 | 再加上空白收合與大小寫折疊 | 421 | 0.95% |
|
||||||
|
| 4 | 再加上去除標點 | 39 | 0.09% |
|
||||||
|
| 5 | 仍無對應 | 127 | 0.29% |
|
||||||
|
|
||||||
|
第 2 層全數為同一現象:歌詞用彎引號 U+2019,模型寫成直
|
||||||
|
引號 U+0027。全庫僅 61 首歌使用彎引號,屬來源排版差異。
|
||||||
|
|
||||||
|
第 3 層以句首大寫為主——356 筆大小寫差異中有 355 筆只差
|
||||||
|
第 0 個字元,即模型自句中取材後將首字母改為大寫。
|
||||||
|
|
||||||
|
第 5 層的 127 筆歸為 71 組相異的(歌, 引述),其中 15 組
|
||||||
|
三次執行皆出現、19 組出現兩次,故多數為系統性而非抽樣
|
||||||
|
雜訊。分類如下:
|
||||||
|
|
||||||
|
| 類 | 樣態 | 筆數 |
|
||||||
|
|---|---|---:|
|
||||||
|
| A | 略去括號內的即興插話,其餘逐字 | 34 |
|
||||||
|
| B | 跨行拼接:字詞俱在,但非如引述般相連 | 16 |
|
||||||
|
| C | 首尾增刪一詞 | 24 |
|
||||||
|
| D | 轉錄差異:方言拼寫正規化,或逕自修正歌詞的錯字 | 22 |
|
||||||
|
| E | 同形異碼字污染 | 6 |
|
||||||
|
| F | 換詞但語意不變 | 14 |
|
||||||
|
| G | **換詞且語意改變** | 9 |
|
||||||
|
| H | **全無對應物** | 2 |
|
||||||
|
|
||||||
|
### H 類:兩筆並非歌詞
|
||||||
|
|
||||||
|
song-513 的 `impermanence`,run2 與 run3 的引述皆為字串
|
||||||
|
`love-as-fleeting-and-transient`——那是同一份碼表中另一個
|
||||||
|
碼的名字,非歌詞。該首歌詞不含 fleeting 或 transient。
|
||||||
|
run1 未標此碼。屬槽位填錯,非杜撰。
|
||||||
|
|
||||||
|
### G 類:九筆改動了語意
|
||||||
|
|
||||||
|
其中兩筆對本研究的判讀影響最大:
|
||||||
|
|
||||||
|
- **song-84**(run2,`relationship-complications`):引述
|
||||||
|
為 `Boys seem to like the girls / Who don't appreciate /
|
||||||
|
All the money and the time that it takes`。歌詞中
|
||||||
|
`Boys seem to like the girls` 之後接的是別的句子,而
|
||||||
|
`Who don't appreciate` 起的兩行屬於四行之後的
|
||||||
|
`Girls seem to like the boys`。模型將兩段焊接,**主張的
|
||||||
|
性別因此顛倒**。
|
||||||
|
- **song-376**(run2,`heartbreak-and-grief`):人稱代名詞
|
||||||
|
對調,願望的方向因而相反。
|
||||||
|
|
||||||
|
### E 類:同形異碼字
|
||||||
|
|
||||||
|
6 筆引述含西里爾字母而其歌詞為純拉丁字母,例如
|
||||||
|
song-113 的 `Tек`(U+0435、U+043A)對應歌詞的 `Tek`、
|
||||||
|
song-622 的 `Iба`(U+0431、U+0430)對應 `Iba`。語意無損,
|
||||||
|
但逐字比對會判為不符,讀者複製該引述亦會得到損壞的字串。
|
||||||
|
|
||||||
|
## 引述的形狀
|
||||||
|
|
||||||
|
- **跨行**:3,740 句引述含換行(**8.47%**),其中跨兩行
|
||||||
|
3,528、三行 168、四行 41、五行 3。其中 3,615 句仍為歌詞
|
||||||
|
的逐字子字串,即誠實的多行引述。定義檔要求恰引一行,
|
||||||
|
模型約每十二句有一句將對句視為一行。
|
||||||
|
- **共用**:5,132 句相異引述各自撐起兩個以上的碼,涉及
|
||||||
|
10,961 筆指派(**24.8%**)。單句最多同時撐起 7 個碼。
|
||||||
|
- **過短**:43 句引述短於 12 字元(如 `Tonight`、
|
||||||
|
`It ain't me`),皆為逐字,惟作為證據甚薄。
|
||||||
|
|
||||||
|
## 三次執行之間的差異
|
||||||
|
|
||||||
|
| | 引述數 | 第 1 層 | 2 | 3 | 4 | 5 |
|
||||||
|
|---|---:|---:|---:|---:|---:|---:|
|
||||||
|
| run1 | 14,711 | 14,363 | 153 | 147 | 12 | 36 |
|
||||||
|
| run2 | 14,719 | 14,368 | 152 | 139 | 12 | 48 |
|
||||||
|
| run3 | 14,716 | 14,367 | 156 | 135 | 15 | 43 |
|
||||||
|
|
||||||
|
偏離率 2.37%、2.39%、2.37%。三次執行在此指標上難以區辨。
|
||||||
|
|
||||||
|
第 5 層的 127 筆散布於 62 首歌、47 個碼,無明顯集中;居前
|
||||||
|
的碼即高頻碼。
|
||||||
|
|
||||||
|
## 兩類違規
|
||||||
|
|
||||||
|
上列樣態分屬兩類,對策不同。
|
||||||
|
|
||||||
|
**詮釋分歧**:比率高且穩定,模型對規則自有一套說得通的
|
||||||
|
讀法——「一行」視對句為一個意思單位(8.47%)、「逐字」
|
||||||
|
容許排版形態與句首大寫(2.37%)。此類可藉修訂定義檔壓
|
||||||
|
低:仲裁步驟曾實測 644 筆中 13 筆輸出夾帶散文,定義檔加上
|
||||||
|
「JSON 之外不得書寫任何文字」後重跑降至 0(詳見
|
||||||
|
`decision-log.md` 2026-08-06)。
|
||||||
|
|
||||||
|
**機械性失手**:比率極低(0.007%–0.029%),如錯拼的鍵、
|
||||||
|
空陣列、把碼名填入引述槽。song-500 的紀錄顯示模型於生成
|
||||||
|
中途已察覺並自行補救,惟已輸出的 token 無法收回。
|
||||||
|
|
||||||
|
單次執行觀察到零違規,不等於違規率為零:仲裁步驟的 644
|
||||||
|
筆與編碼步驟的 44,146 筆規模相差近七十倍。
|
||||||
|
|
||||||
|
## 對管線的意涵
|
||||||
|
|
||||||
|
每一條明確的格式要求都有非零的違規率,且 temperature=0 未
|
||||||
|
消除之。因此消費 LLM 輸出的確定性步驟須驗證其契約,而非
|
||||||
|
信任之——計票須對照詞彙表、失敗須出聲、丟棄須計數。
|
||||||
Reference in New Issue
Block a user