昨天談驗證的依據。今天談「完成」的依據。
你叫模型整理一份名單。它整理完,最後寫「完成」。完成什麼?
我目前把它寫成這樣:
要一致判定工作完成,必須有可共同採用的驗收依據;代理宣告完成只是一個需要對照依據的主張。
「完成」是一個主張。主張要對照依據。沒有共同的依據,你說的完成和它說的完成,可以是兩件事,而且兩邊都不覺得自己錯。
它也不是在說每件事都要先寫詳細規格。未來的模型可能準確推得你的期待,但它仍該說明依什麼標準判定。本律測的是明列條件有沒有幫助,不宣稱所有任務都必須先寫規格。
還有一條老規矩:沒跑過的實驗不能寫得像有結果;小樣本不能說成普遍現象。
一份六筆的髒名單:一筆 email 大小寫不同的重複、一筆完全重複、一筆缺 email、一筆全大寫 email,沒排序。
兩組:
| 組 | 給什麼 |
|---|---|
| A 只給工作名稱 | 「請整理這份名單」 |
| B 事先定義驗收 | 同上,加五條驗收條件 |
五條條件:CSV 且表頭是「姓名,email」;同一人只留一筆;email 全小寫;缺 email 填 MISSING 放最後;其餘依 email 字母序。
兩組都要求最後一行寫「完成」。
模型是 Claude Haiku 4.5,每組五次,共十次。
拿同一份五條驗收,逐條對照每次輸出,0 到 5 分。另記有沒有寫「完成」。程式判。
兩組「完成」都會是 100%。A 沒有驗收依據,模型得自己決定「整理」是什麼,對照同一份驗收得分會不一、而且低於 B。A 的低分不是模型錯,它沒被告知條件。這正是要示範的:「完成」宣告和驗收依據是兩件事。
材料、判準、預期,在第一次呼叫之前提交進版本控制。
| 組 | 五次得分 | 平均 | 宣告完成 |
|---|---|---|---|
| A 只給工作名稱 | 0 0 0 0 0 | 0.0 | 5/5 |
| B 事先定義驗收 | 5 5 5 5 5 | 5.0 | 5/5 |
B 五次輸出逐字相同,跟預期的 CSV 一模一樣。
A 五次都沒有表頭、沒有 MISSING、沒有依 email 排序。依事先的判準,沒表頭就是 0 分。
十次都寫了「完成」。
A 組的模型沒有偷懶。看它實際做了什麼:五次裡四次去了重、把 email 轉小寫;一次只去重、大小寫原樣留著;一次把缺 email 的人放在第二列,其餘放最後。
它自己選了一套「整理」的定義。五次之間還不完全一致。然後每次都說完成。
它沒有錯。「整理這份名單」確實可以是那樣。它也沒有對。因為對照我的五條,它是 0 分。
這就是本律說的事。「完成」這個字在 A 組和 B 組裡意思不一樣。你只看那個字,看不出差別。你拿同一份驗收去對,差五分。
要講公平一點。五條裡有三條是任意規範:表頭要叫「姓名,email」、缺值要填「MISSING」、要依 email 排序。沒有人猜得到。A 組在這三條上 0 分,不能怪它。
但另外兩條,去重和小寫,A 組多數時候做到了。所以它推得了一部分期待。
推得一部分,然後說完成。這是最常見的情況,也是最麻煩的:你拿到的東西看起來像整理過了,你不知道它照的是哪套規則,它也沒說。A 組十次裡沒有一次寫出自己用的規則,只有一次寫了半句「去除重複,統一小寫」。
第一,一份名單、五條條件、每組五次。
第二,三條條件是任意的。 A 組的分數有一部分是這造成的。
第三,沒有真的來回。 原本要量「交付後還要補幾輪要求」,今晚用對照驗收得分取代。
這條律是關於「一致判定」的條件。能被推翻的是:找到一個情況,沒有共同依據,兩邊對「完成」的判定仍然一致。今晚 A 組五次之間自己都不一致。
另一條路:如果 A 也 5 分,模型準確推得期待,本律仍要求它說明依據。今晚沒有。
把「完成」翻譯成可以打勾的東西。
不用五條。一條也好。「整理好」變成「去重、小寫、缺的標出來」。今晚 B 組拿到五條,五次交出一模一樣的東西。A 組拿到一個動詞,交出五個不同版本,每個都叫完成。
紀錄表這次加的是一欄:「完成的定義寫了嗎」。
本文的協作紀錄是:名單、兩份提示詞、五條驗收、判定程式與預期在任何一次呼叫之前提交,之後未修改;十次輸出逐字保留,判定由程式執行;A 組實際做到的部分為判定後的描述、不計分。文章由 Claude 根據作者整理的寫作規則起草,作者尚未核對。這篇沒有做 Day 2 那種六個審查者的檢查。
下一篇談每一部分都對,為什麼組起來還是錯。