這篇把 Lab Arena 的一個分數從頭拆到尾:資料怎麼收、態度怎麼判、數字怎麼算出來、信心值是什麼,以及校準流程是怎麼設計的。
原則先講一次:分數全部由公式算出來,評分模型不直接給分數。 榜上任何一個數字,你都能拿著這篇的公式手算回推。
資料來源
只收三個來源,都是工程師實際會去讀模型評價的地方:
| 來源 | 筆數 | 說明 |
|---|---|---|
| Hacker News | 79 | 工程師密度最高,但門檻也高:HN 的語氣本來就偏挑剔 |
| 82 | 數量最大,r/LocalLLaMA 一類的版塊討論最熱 | |
| X(Twitter) | 55 | 覆蓋最少,受限於平台的取得方式與登入憑證 |
這一版資料池共 216 則貼文,分屬 8 個模型,每個模型 19~35 則。
幾個收集階段就做掉的處理(都做在進資料池之前,不是事後補):
- 去重。 文字先正規化(轉小寫、空白壓扁)再取 sha256。同一則爆紅貼文跨來源轉貼多次只算一次——這是這份資料最容易被忽略、也最容易灌水的漏洞。
- 只留三個來源。 其他來源(招聘文、業配)以白名單擋掉。
- 排除非英文。 拉丁字母比例低於 0.6 的貼文丟掉,因為評分 rubric 是英文的,拿中文貼文去問只會得到亂答。
- 歸屬三態。 查某模型時,同一篇貼文可能同時提到好幾個模型。這裡分成三種處理:提到了查的模型 → 留;沒提到查的模型、卻提到了清單裡別的模型 → 丟(模糊比對造成的錯歸屬);兩個都沒提到 → 留,靠引擎的相關度判斷(例如留言上下文只寫「this model」)。第二種處理清掉的量不小,而且曾經讓某個模型的總分應聲下跌 7.5 分——錯歸屬是這份榜單品質的最大風險,不是次要問題。
- 長文截斷。 標題加摘要合成後截到 1200 字元,控制單則的評分成本。
模型的定價不走社群,是另一條路來的:以人工維護的模型清單為主(只追值得追的),定價與 context length 附掛 OpenRouter 的公開 API(用 API,不爬 HTML)。所以榜上「定價」那欄是硬資料,獨立於任何人的主觀評價。
評分:四個 LLM 組成的評審團
評分這一步,一則貼文會被問 6 題:
| 題 | 問的是 | 可選標籤 |
|---|---|---|
overall(總評) |
作者對這個模型的整體態度 | 正面/負面/中立 |
quality(智能) |
能力與輸出品質:正確性、聰明度、可靠性 | 正面/負面/未談及 |
speed(速度) |
回應速度、延遲、吞吐 | 正面/負面/未談及 |
tokenEfficiency(Token 效率) |
囉嗦程度、上下文利用效率 | 正面/負面/未談及 |
tokenUsage(Token 用量) |
完成任務要燒多少 token、額度消耗 | 正面/負面/未談及 |
priceValue(CP 值) |
定價、訂閱、免費額度的性價比 | 正面/負面/未談及 |
「未談及」是這套設計的關鍵。 它不等於「中立」——neutral 只屬於總評題。社群其實很少認真比較各模型的 CP 值,一篇抱怨「太慢了」的貼文就是沒談 CP 值,記成「未談及」才是誠實的答案。硬把沒談過的面向填成中立,會憑空製造出一堆沒有訊息的 50 分。
每題由四位 LLM 評審各自獨立回答(同一份 prompt、同一份 rubric、溫度 0、四家不互看原始票),然後取多數決。四位是 deepseek-v4.1-flash、glm-5.3-flash、gpt-6-luna、qwen3.7-flash,都經同一個 API 呼叫。
- 四票一致 →
prob = 1.0 - 三比一 →
prob = 0.75 - 二比二平手 → 該面向的判定記為沒有結果,聚合時直接排除
平手記成「沒有結果」而不是硬猜,是刻意的:寧可少一筆樣本,也不要把五五波的爭議算成任何一邊。每位評審的原始票另外留著,之後要收斂成單一評審時還能回頭分析一致性。
跑完一整池 216 則 × 6 題 × 4 家的成本大約是 0.13 美元。這個數字小到可以每天重跑——榜單能被重跑本身就是設計目標,不是附帶功能。
這裡有個值得記的歷史教訓:最初的評分器是一個幾百 MB 的小分類模型,跑起來幾乎不花錢,但在標註考卷上準確率只有 0.44,跟擲硬幣差不多——它太小了,做不來這種語意判斷。換成四家 LLM 評審團之後成本還是可忽略,準確度卻完全不同。評分器要選對,不是選便宜的。
從態度到分數
有了每一面向的正面數 P 與負面數 N(「未談及」不計入),n = P + N。
n = 0 就直接判定資料不足——那個面向根本沒被討論過,不能變成一個數字。榜上顯示「資料不足」,排序時一律墊底。
有表態時,公式是:
raw = (P − N) / n
dimScore = 50 × (raw + 1) × n / (n + 10) + 50 × 10 / (n + 10)
拆開看,其實是把「觀察到的比例」和「先驗的中立值 50」依樣本數加權平均:n 越大越相信觀察值,n 越小越往 50 靠。這個 K = 10 叫偽樣本收縮——10 則的證據只被當成 10 份,而不是假裝能代表整個社群。
n = 10:觀察值被收掉一半n = 90:只被收掉 10%
拿榜上的一格實際手算(Claude Sonnet 5.5 的智能欄,12 則有表態:11 正面、1 負面):
raw = (11 − 1) / 12 = 0.8333
dimScore = 50 × 1.8333 × 12/22 + 50 × 10/22
= 50.00 + 22.73
= 72.7 ← 榜上顯示的就是 72.7
對得上。這個收縮有實際效果:單一面向的樣本通常薄到不能用。 榜上「Token 用量」那一欄,8 個模型有 3 個直接是資料不足,有資料的五個「有表態的樣本數」只有 1~3 則——最高那格 61.5 是 3 則貼文全為正面算出來的,最低的 41.7 只有 2 則。這些數字不是「模型在 Token 用量上表現好或差」,是「只有兩三則貼文在談,談不出結論」。
總分
總分是五個面向的加權平均:
| 面向 | 權重 |
|---|---|
| 智能 | 0.50 |
| 速度 | 0.20 |
| CP 值 | 0.20 |
| Token 效率 | 0.05 |
| Token 用量 | 0.05 |
品質權重最高,因為社群談模型時本來就在談好不好用;兩個 Token 相關面向權重很低,因為社群幾乎不談,樣本也就少。
兩個必須知道的細節:
- 資料不足的面向會被剔除,剩下的權重重歸一。 所以一個只有智能有資料的模型,總分其實就是它的智能分。拿這種總分跟一個五個面向都有資料的模型比,是不嚴謹的——這就是為什麼面向分與樣本數要一起看。
- 總分是用四捨五入後的面向分算的,不是用未四捨五入的值。刻意這樣做:你在榜上看到的數字,就是能拿來手算的數字。
樣本數與信心值
這兩個東西量的是同一件事的不同面:這個分數可不可信。
- 樣本數 N:這個模型有幾則貼文進來並完成評分。N < 20 標「僅供參考」。
- 正面率:總評題判正面的比例。
- 樣本信任度:正面率的 Wilson 95% 置信下界(z = 1.96)。
Wilson 下界的用意是「往壞處估」。樣本少的時候,正面率這個點估計值會很不可靠——10 則裡 7 則正面,看起來 70% 很漂亮,但它的 95% 下界只有約 40%。榜上給的是那個下界,所以分數低的模型是真的比較沒把握,不是被算出來。
這一版資料的信任度全部落在「低」到「中」之間(最高的也只有 30%),因為 8 個模型分攤 216 則貼文,每個模型的樣本本來就薄。 榜單要拿來看趨勢與相對位置,不是拿來宣稱精確數值。
校準流程的設計
評審團也是模型,它判得準不準必須量,不能靠感覺。這一節只講流程怎麼設計,以及現況。
流程是四步:
- 建標註考卷(gold)。 抽一批貼文,交給四家真實的 LLM(刻意跟評審團不同家,避免自己考自己)逐則標註六個面向,溫度 0,規則照同一份標註指南,三比二以上定案。這一版考卷定案 117 列。
- 跑評審團。 對同一批貼文跑正式評分。
- 比對。 算評審團跟考卷的準確率。
- 看門檻。
門檻的設計有個關鍵修正,值得單獨講:
總評題:準確率要達到 0.80 以上。
五個面向:門檻不是絕對 0.80,而是「準確率要勝過全猜『未談及』的常數基準」。
為什麼要改?因為實測發現九成的貼文在面向題上都是「未談及」。這種分布下,一個什麼都沒學、每題都回答「未談及」的常數策略,本來就能拿到 0.9 的準確率。拿絕對 0.80 去卡一個上限是 0.9 的指標,等於獎勵最沒-information 的做法。改成「贏過常數基準」之後,指標才真的在問「評審團有沒有學到東西」。
還有一條誠實性規則:某個面向「有討論的列數」少於 10,就標「樣本不足」,不得據以下結論。 一兩列之差是雜訊,不是訊號。
現況。 校準的流程與門檻已經定案、報告也產出了,但「校準是否算通過」在兩個專案的文件之間還沒對齊——資料產物上的旗標與工具端的計畫文件說法不一致。在這裡對齊之前,本站只呈現流程設計與各面向的可信度標示,不宣稱校準已通過。想看當期數字,請看排行榜頁面上由資料產物驅動的「校準」那一欄,不要把這篇文章當成結論。
自己驗一遍
整條鏈路的每一段都可以重跑,而且可重現:
collect 抓近 30 天貼文 → 去重、過濾、歸屬 → evidence/*.jsonl
score 評審團逐則判斷六題(溫度 0) → 回填 votes 與原始票
build votes 依本文公式聚合成 scores.json(自動驗證格式)
build 的輸出除了時間戳之外逐位元組可重現,寫入是原子的(先寫暫存檔再改名),中途失敗不會留下半截檔案;寫完自動跑格式檢查,不合格就不覆蓋原檔並以非 0 結束碼收場。原料與分數都以檔案進版控,所以任何一個數字都能沿著 git 歷史追回去。
相關閱讀:〈Lab Arena 是什麼〉|〈這個排行榜的限制〉