Evaluasi LLM: Dari Benchmark Publik ke Golden Set Kamu
Agent yang sama, tugas yang sama, sepuluh run. Tujuh sukses terlihat seperti 70% sampai kamu menghitung pass^10: tepat nol.
Di halaman ini
Ini demonstrasinya. Agent dari Bab 23 — loop yang sama, dua dari empat tool-nya — diarahkan ke direktori berisi lima file log dan konfigurasi, lalu diberi satu pertanyaan.
Q: What is the last line of errors.log about?
turn 1 -> read_file({"path": "errors.log"})
turn 2 -> "The last line of errors.log is:
ERROR worker 7 timed out after 30000 ms."Benar, dan itu sama sekali bukan bukti apa pun — karena transkrip itu adalah satu dari sepuluh yang saya jalankan, dan saya memilihnya setelah melihat kesepuluhnya.
Jalankan tugas identik itu sepuluh kali, tanpa mengubah apa pun kecuali sampling seed, dan agent menjawab benar tujuh kali. Tujuh puluh persen, angka yang akan masuk ke slide. Sekarang ajukan pertanyaan yang benar-benar dipedulikan pelanggan — apakah ini akan berhasil setiap kali? — dan jawabannya adalah angka yang sama sekali berbeda:
t20 7/10 successes = 70 % (95 % Wilson interval: 39.7 % to 89.2 %)
pass^1 70.00 % pass^5 8.33 %
pass^2 46.67 % pass^7 0.83 %
pass^3 29.17 % pass^8 0.00 %
pass^4 16.67 % pass^10 0.00 %Agent itu belum pernah menyelesaikan tugas ini sepuluh kali berturut-turut dan, berdasarkan bukti ini, tidak diharapkan melakukannya. Angka itu — pass^10 — adalah angka yang jujur, hampir tidak pernah dipublikasikan, dan pada akhir bab ini kamu akan tahu cara menghitungnya, berapa biaya menghitungnya, dan mengapa interval di samping 70% lebih penting daripada 70% itu sendiri.
Tampilkan detail
Yang dibutuhkan bab ini dari bab-bab sebelumnya.
- Bab 4 untuk statistiknya: interval Wilson pada sebuah proporsi, alasan mengapa tujuh belas benar dari dua puluh tidak membedakan apa pun, dan baseline bodoh sebagai syarat pertama.
- Bab 15 untuk bench-nya: harness lima puluh baris, paired sign test pada kasus ketika dua sistem berbeda pendapat, dan aturan bahwa prompt diukur, bukan diperdebatkan.
- Bab 23 untuk hal yang diukur: loop, lima jalan keluar, akuntansi biaya, dan pengamatan penutup bahwa harness membuat agent bisa diatur tetapi tidak membuatnya benar.
Dua panel di sini. TypeScript untuk evaluasimu sendiri, karena tempatnya ada di continuous integration di samping kode kamu. Python untuk panel kedua, karena public benchmarks hidup di sana dan salah satu pengukuran di bawah membutuhkan logits.
Tiga proyek, tiga instrumen
Tautan ke bagian: Tiga proyek, tiga instrumenHampir setiap perdebatan tentang evaluasi adalah dua orang yang mengukur hal berbeda. Ada tiga proyek dan ketiganya tidak berbagi instrumen.
| apa yang kamu evaluasi | pertanyaannya | instrumennya | siapa pemiliknya |
|---|---|---|---|
| model | apakah model ini lebih baik daripada yang itu, secara umum? | public benchmarks, leaderboard | komunitas |
| aplikasimu | apakah prompt saya, retrieval saya, schema saya bekerja pada input saya? | golden set kamu | kamu |
| agent kamu | apakah seluruh loop, dengan tool dan side effect, mencapai tujuan dengan andal? | keberhasilan tugas plus pass^k | kamu |
Kebingungannya mahal ke satu arah. Leaderboard memberi tahu bahwa sebuah model kuat dalam penalaran tingkat pascasarjana; ia tidak bisa memberi tahu apakah model itu akan merutekan tiket dukungan kamu. Dan evaluasi aplikasi yang memberi skor satu jawaban per input sama sekali tidak bisa melihat agent, karena agent memiliki distribusi trajektori dan satu jawaban hanyalah satu sampel darinya. Bab 22 menamai baris ketiga itu dan membiarkannya kosong: ukuran performa, satu bagian dari spesifikasi agent yang paling terakhir ditulis tim, atau tidak pernah ditulis sama sekali.
Urutannya juga penting, dan vendor yang menjual model kepadamu mengatakan begitu. Panduan agent OpenAI mereduksi pemilihan model menjadi tiga langkah, dalam urutan ini: "Siapkan eval untuk menetapkan baseline performa", "Fokus memenuhi target akurasi kamu dengan model terbaik yang tersedia", "Optimalkan biaya dan latensi dengan mengganti model yang lebih besar dengan yang lebih kecil jika memungkinkan".1 Evaluasi datang lebih dulu, karena langkah dua dan tiga tidak bermakna tanpa angka.
Golden set, dan apa yang sebenarnya dibeli oleh dua puluh kasus
Tautan ke bagian: Golden set, dan apa yang sebenarnya dibeli oleh dua puluh kasusGolden set adalah daftar input, masing-masing dengan jawaban yang sudah ditulis, dan grader yang memutuskan apakah output cocok. Ia membosankan, kecil, dan satu-satunya artefak dalam bab ini yang menjadi milikmu. Yang dibangun di sini memiliki dua puluh tugas di atas direktori berisi lima file — bukan tiga file Bab 23, jadi jawabannya bukan jawaban yang sama — dan grader ditulis sebelum agent berjalan:
export type Task = {
id: string;
prompt: string;
answer: string; // the fact, in words, for a human and for a judge
must: RegExp[]; // ALL must match the final answer
mustNot?: RegExp[]; // NONE may match
};
export const GOLDEN: Task[] = [
{ id: "t04", prompt: "Which file is the largest?", answer: "access.log",
must: [/access\.log/i], mustNot: [/errors\.log/i, /notes\.txt/i] },
{ id: "t12", prompt: "Which HTTP status codes appear in access.log? List all of them.",
answer: "200, 429 and 500", must: [/200/, /429/, /500/] },
// ...eighteen more
];Dua properti menjadi penopang utama. Daftar mustNot ada karena model yang menyebut tiga file termasuk yang benar belum menjawab. Dan answer ditulis dalam prosa sekaligus pola, karena manusia dan judge sama-sama akan membutuhkannya nanti — dan menulis fakta yang sama dua kali dalam dua notasi adalah cara kamu mengetahui bahwa kamu tidak sepakat dengan dirimu sendiri tentang tugas itu sebenarnya apa.
Sekarang tabel yang menentukan. Empat sistem kandidat, dua puluh tugas yang sama, akurasi dengan intervalnya, dan dua kolom yang selalu disembunyikan oleh tabel akurasi saja:
| system | benar | akurasi, Wilson 95% | biaya per tugas terselesaikan | latensi rata-rata |
|---|---|---|---|---|
| A — tanpa tool, greedy | 2/20 | 10.0% [2.8, 30.1] | $0.004649 | 663 ms |
| B — tool, prompt ringkas | 5/20 | 25.0% [11.2, 46.9] | $0.005576 | 1,362 ms |
| C — tool, prompt terpandu | 2/20 | 10.0% [2.8, 30.1] | $0.013071 | 930 ms |
| D — C, best of 3 pada T = 0.7 | 1/20 | 5.0% [0.9, 23.6] | $0.073532 | 2,628 ms |
Baca intervalnya sebelum pemenangnya. Run arm B berada dari 11% sampai 47%; arm A dari 3% sampai 30%. Keduanya tumpang tindih hampir di sepanjang rentangnya, yang merupakan temuan Bab 4 yang tiba tepat di tempat yang dijanjikan: dua puluh kasus tidak bisa mengurutkan empat sistem. Bab 15 mempertajam ini dengan menanyakan pertanyaan berpasangan — dari kasus ketika dua arm berbeda, seberapa timpang pembagiannya? — karena kesulitan bersama pada set tersebut saling membatalkan. Ini setiap pasangnya:
A vs B +0 / -3 p = 0.2500 B vs C +4 / -1 p = 0.3750
A vs C +2 / -2 p = 1.0000 B vs D +4 / -0 p = 0.1250
A vs D +2 / -1 p = 1.0000 C vs D +1 / -0 p = 1.0000Tidak satu pun dari enam perbandingan terbukti. Arm terbaik mengalahkan arm tanpa tool sama sekali sebesar lima belas poin, dan tiga kasus discordant adalah sandarannya. Dua puluh kasus menunjukkan mekanisme dan tidak bisa memilih pemasok; mengatakan sebaliknya dalam rapat adalah cara model buruk dibeli.
Ada satu hal yang memang dibuktikan tabel ini, dan itu kolom yang tidak pernah dimasukkan siapa pun. Arm D berbiaya tiga belas kali arm B per tugas terselesaikan, karena sampling tiga trajektori dan mengambil jawaban modal melipatgandakan tagihan tiga kali, terlepas apakah akurasinya ikut menjadi tiga kali. Tabel akurasi yang menghilangkan biaya membuat trade-off itu tak terlihat.
Metric menentukan angkanya
Tautan ke bagian: Metric menentukan angkanyaSekarang temuan yang mengubah cara kamu membaca setiap benchmark yang akan kamu lihat. Ambil dua ratus transkrip yang sama — dua puluh tugas, sepuluh run, tidak satu token pun dibuat ulang — dan beri skor dengan tiga cara:
| grader | benar | akurasi, Wilson 95% |
|---|---|---|
| exact match terhadap jawaban tertulis | 0/200 | 0.0% [0.0, 1.9] |
| jawaban tertulis muncul sebagai substring | 26/200 | 13.0% [9.0, 18.4] |
| keyword rubric di atas | 52/200 | 26.0% [20.4, 32.5] |
Nol, tiga belas, dua puluh enam. Sistemnya tidak berubah. Grader-nya yang berubah. Exact match mengembalikan nol bukan karena agent tidak berguna, tetapi karena tidak ada jawaban teks bebas yang pernah byte-identical dengan referensi: ia mengukur formatting dan melaporkannya sebagai capability.
Itu bukan keanehan, melainkan mekanisme, dan mekanisme itu punya nama. Hard-cutoff metric memberi skor all-or-nothing pada sebuah tugas yang terdiri dari beberapa sub-fakta, sehingga ia berlipat. Tugas t12 meminta tiga status code sekaligus. Di sepanjang sepuluh run:
per-code presence 200: 9/10 429: 6/10 500: 8/10 (mean 0.77 per fact)
all three at once 5/10Setiap fakta benar sekitar tiga perempat waktu; menuntut ketiganya sekaligus memangkas skor menjadi setengah, dan cukup dekat dengan 0.50 yang terukur untuk menunjukkan dari mana penurunan itu berasal. Generalisasikan:
| akurasi per fakta | |||||
|---|---|---|---|---|---|
| 0.60 | 60.0% | 36.0% | 21.6% | 7.8% | 0.6% |
| 0.80 | 80.0% | 64.0% | 51.2% | 32.8% | 10.7% |
| 0.90 | 90.0% | 81.0% | 72.9% | 59.0% | 34.9% |
| 0.95 | 95.0% | 90.3% | 85.7% | 77.4% | 59.9% |
Baca baris 0.90 melawan baris 0.95 pada : peningkatan per fakta sebesar lima poin menjadi dua puluh lima poin pada konjungsi. Tidak ada hal diskontinu yang terjadi pada model. Kurva mulus yang dibaca melalui metric all-or-nothing terlihat seperti lompatan — persis argumen yang dibuat Schaeffer, Miranda, dan Koyejo tentang kemampuan emergent, dan yang Bab 10 tunda ke sini.2 Audit mereka menemukan bahwa paling banyak 5 dari 39 metric pilihan BIG-Bench menampilkan emergence sama sekali, dengan dua metric diskontinu menyumbang lebih dari 92% kasus yang diklaim.
Jadi disiplinnya, dalam satu kalimat: lompatan pada chart adalah bukti tentang metric sampai terbukti sebaliknya. Sebelum kamu percaya sebuah capability muncul, plot run yang sama dengan metric yang memberi kredit parsial dan lihat apakah tebingnya bertahan.
Ada versi tingkat kedua dari ini yang menurut Kalai dan rekan-rekannya merusak dari hulu: benchmark yang diberi skor benar-atau-salah memberi reward pada tebakan dibanding mengatakan "saya tidak tahu", sehingga model yang dioptimalkan terhadapnya belajar menebak. Perbaikan yang mereka usulkan bukan benchmark halusinasi lain, melainkan "memodifikasi scoring benchmark yang sudah ada yang misaligned tetapi mendominasi leaderboard".3 Golden set kamu punya tuas yang sama, dan hanya satu baris: putuskan apakah abstention dihitung sebagai kegagalan atau sebagai kategorinya sendiri. Kebanyakan orang tidak pernah memutuskan, sehingga diam-diam ia dihitung sebagai kegagalan, dan sistem yang mereka kirim menebak.
pass^k, dan varians yang tidak dipublikasikan siapa pun
Tautan ke bagian: pass^k, dan varians yang tidak dipublikasikan siapa punSemua sejauh ini memberi skor satu attempt per tugas. Agent bukan satu attempt. Bab 17 menetapkan bahwa kamu tidak memiliki determinisme bahkan pada temperature nol, sehingga input yang sama menghasilkan distribusi trajektori dan benchmark yang menjalankan tiap tugas sekali melaporkan satu sampel darinya.
Kontribusi τ-bench adalah metric untuk itu. Paper-nya mendefinisikannya dengan jelas: "kami mengusulkan metric baru – pass^k (pass hat k), didefinisikan sebagai peluang bahwa semua k trial tugas i.i.d. berhasil, dirata-ratakan di seluruh tugas."4 Jalankan tiap tugas kali, hitung keberhasilannya, dan estimator tak biasnya adalah:
Yang kedua adalah pass@k yang familiar dari code generation: peluang bahwa setidaknya satu dari attempt berhasil. Letakkan berdampingan pada hitungan terukur yang sama dan keduanya bergerak berlawanan arah:
pass@k — setidaknya satu | pass^k — semuanya | |
|---|---|---|
| 1 | 26.0% | 26.0% |
| 2 | 37.0% | 15.0% |
| 3 | 43.5% | 10.5% |
| 5 | 51.2% | 6.7% |
| 8 | 57.7% | 5.1% |
| 10 | 60.0% | 5.0% |
Run yang sama, grader yang sama, dua puluh tugas yang sama. Satu kolom mengatakan sistem membaik dengan lebih banyak attempt dan kolom lain mengatakan ia memburuk, dan keduanya benar, karena menjawab pertanyaan berbeda. pass@k adalah metric yang tepat ketika manusia memfilter output — code generation, draft, brainstorming — dan attempt tambahan murah. pass^k adalah metric yang tepat ketika agent bertindak tanpa filter, yang memang arti "agent". Mempublikasikan yang pertama saat yang kedua berlaku adalah overstatement paling umum di bidang ini, dan headline τ-bench sendiri adalah versi yang jujur: gpt-4o pada sekitar 61% pass^1 di retail turun ke sekitar 25% pada pass^8.4
Sekarang sengatan dalam angka saya sendiri. pass^10 atas dua puluh tugas saya adalah 5.0%: tepat satu tugas dari dua puluh terselesaikan pada semua sepuluh run. Tugas itu adalah t19, "Apakah deploy 42 berhasil?", dan inilah dua dari sepuluh jawaban yang dinilai benar oleh rubric:
run 2 "To check if 'deploy.log' succeeded in deploying 42, I will list the file
names in the working directory using the list_files function..."
run 8 "Yes, deploy 42 has successfully deployed. Deploying was successful for 41
as well."Yang pertama tidak pernah menjawab. Yang kedua menambahkan klaim yang salah — deploy 41 di-roll back. Keduanya cocok dengan /succe|yes/. Satu-satunya tugas yang menjaga pass^10 di atas nol adalah artefak grader, jadi angka sebenarnya adalah nol, dan tidak ada agregat yang akan menunjukkannya kepada saya. Sampling transkrip di balik tugas dengan skor terbaikmu adalah tempat grader mati.
Dan satu angka lagi, angka yang menjadi nama bagian ini. Sepuluh evaluasi identik — sistem yang sama, dua puluh tugas yang sama, kode yang sama, tidak ada yang berubah selain seed:
per-run correct: 5 2 5 5 8 5 8 5 4 5 -> 10 % .. 40 %, mean 26.0 %, sd 8.8 pointsRentang tiga puluh poin pada sistem yang tidak berubah. Jika kamu menjalankan suite sekali sebelum release dan sekali setelahnya, "peningkatan" delapan poin berada di dalam sebaran itu dan kamu akan mengirimnya sambil percaya bahwa kamulah penyebabnya. Inilah mengapa pooled interval di atas — 26.0% [20.4, 32.5] — terlalu sempit untuk dikutip sendirian: ia memperlakukan dua ratus trial berkorelasi sebagai dua ratus trial independen. Ringkasan jujur dari evaluasi agent adalah mean dan sebaran lintas repeat, dan hampir tidak ada yang mempublikasikan yang kedua.
Judge, dan golden set milik judge sendiri
Tautan ke bagian: Judge, dan golden set milik judge sendiriRubric tidak scale untuk jawaban open-ended, jadi langkah standar adalah meminta model menilai output. Pada frontier scale, cara ini cukup berhasil untuk menjadi default, dan ia punya tiga failure mode bernama: position bias, verbosity bias, dan self-enhancement bias.5
Ukur sebelum percaya. Enam puluh jawaban yang sama — tiga dari sepuluh run — diberi label dengan tiga cara. Label manusia adalah label saya: saya membaca keenam puluhnya dengan lima file terbuka dan menerapkan satu aturan tertulis, pass jika dan hanya jika jawaban menyatakan fakta yang ditanyakan dan tidak berisi apa pun yang dibantah oleh file.
| grader | mengatakan pass | sepakat dengan manusia | false pass | false fail |
|---|---|---|---|---|
| keyword rubric | 17/60 | 50/60 = 83.3% [72.0, 90.7] | 8 | 2 |
| model sebagai judge | 60/60 | 11/60 = 18.3% [10.6, 29.9] | 49 | 0 |
Judge mengatakan PASS enam puluh kali dari enam puluh. Ia akan melaporkan agent ini pada akurasi 100% di set yang diberi skor 18% oleh manusia. Judge tanpa daya diskriminatif bukan instrumen berisik; ia adalah fungsi konstan, dan fungsi konstan memberi sistem terbaikmu dan sistem terburukmu skor yang sama.
Prompting tidak menyelamatkannya. Empat varian, enam puluh item yang sama:
| judge prompt | mengatakan pass | agreement dengan manusia |
|---|---|---|
| "Balas PASS atau FAIL." | 60/60 | 18.3% |
| "Balas FAIL atau PASS." — label ditukar | 56/60 | 25.0% |
| plus daftar eksplisit tentang apa yang dihitung sebagai kegagalan | 55/60 | 26.7% |
plus satu contoh FAIL yang dikerjakan dan satu contoh PASS | 56/60 | 25.0% |
Menukar urutan dua label dalam instruksi mengubah empat verdict. Itu efek yang terukur dan jenis efek yang salah: judge merespons bentuk prompt alih-alih jawaban di depannya.
Demonstrasi bersihnya adalah pairwise. Dua puluh pertanyaan, masing-masing dengan satu kandidat yang jelas benar dan satu yang jelas salah, disajikan dalam kedua urutan:
picked the FIRST option 40/40 = 100.0 %
order-consistent (same winner both ways) 0/20 = 0.0 % [Wilson 0.0, 16.1]
picked the CORRECT answer 20/40 = 50.0 %Ia memilih posisi A empat puluh kali dari empat puluh. 50% pada correctness bukan kompetensi parsial — itu aritmetika, karena jawaban benar berada di posisi A tepat pada separuh trial. Konsistensi di sini didefinisikan sebagaimana MT-Bench mendefinisikannya, "persentase kasus ketika judge memberi hasil konsisten saat menukar urutan dua assistant", yang membuat perbandingan apples to apples: GPT-4 mendapat skor 65.0% pada ukuran itu, dan few-shot prompting menaikkannya ke 77.5%.5 Milik saya mendapat nol.
Mitigasi standarnya juga dari paper itu: "panggil judge dua kali dengan menukar urutan dua jawaban dan hanya nyatakan menang ketika sebuah jawaban dipilih dalam kedua urutan."5 Terapkan di sini dan judge menghasilkan nol verdict yang bisa dipakai dari dua puluh pasangan — itu hasil yang benar, dan jauh lebih baik daripada dua puluh verdict penuh percaya diri.
Catatan metodologis yang lebih berharga daripada hasilnya. Saya juga menjalankan tes verbosity: jawaban benar yang sama, satu salinan dipanjangkan dengan kalimat 36 kata yang tidak menambahkan apa pun. Judge memilih versi yang lebih panjang tepat pada 50% trial — yang terlihat seperti absennya verbosity bias dan sama sekali bukan itu, karena judge yang selalu memilih posisi A akan mendapat 50% pada pairing seimbang apa pun. Kamu tidak bisa mengukur bias kedua sampai bias pertama dikendalikan. Menukar posisi bukan penyempurnaan untuk ditambahkan nanti; itulah yang membuat setiap pengukuran lain bisa ditafsirkan.
Untuk apa judge digunakan. Jawaban open-ended tanpa bentuk yang bisa di-parse: tone, cakupan, apakah sebuah citation mendukung kalimatnya, apakah penolakan sudah tepat. Murah, cepat, dan kira-kira sebaik base model-nya.
Apa yang bukan judge. Ground truth. Ia adalah sistem dengan akurasi, profil bias, dan biaya, dan ia membutuhkan golden set label manusia miliknya sendiri — termasuk kegagalan yang diketahui — sebelum angka apa pun yang ia hasilkan berarti apa-apa.
Caveat jujurnya: judge ini adalah model setengah miliar parameter, dan tidak seorang pun seharusnya menilai dengan model seperti itu. Poinnya bukan bahwa judge buruk. Poinnya adalah angka-angka di atas membutuhkan delapan menit untuk diproduksi, dan tanpa angka itu verdict judge ini pada keputusan shipping akan menjadi 100%.
Panel kedua: Python, dan probe untuk kontaminasi
Tautan ke bagian: Panel kedua: Python, dan probe untuk kontaminasiIni adalah panel Python ketiga sekaligus terakhir yang dideklarasikan dalam kursus, dan alasannya adalah dari mana angka publik berasal. lm-evaluation-harness mencakup "lebih dari 60 benchmark akademik standar untuk LLM, dengan ratusan subtask dan varian yang diimplementasikan" dan merupakan "backend untuk Open LLM Leaderboard populer milik Hugging Face"; HELM, SWE-bench, dan τ-bench adalah package Python dengan entry point Python.6 Menjalankan model kamu terhadap angka yang dipublikasikan berarti menjalankan kode mereka, dan pada hari kamu ingin membandingkan dengan angka yang dikutip seseorang, inilah ekosistem tempat kamu berada:
lm_eval --model hf \
--model_args pretrained=EleutherAI/gpt-j-6B \
--tasks hellaswag \
--device cuda:0 \
--batch_size 8Alasan kedua adalah ada satu pengukuran dalam bab ini yang mustahil lewat HTTP. Kontaminasi — test set yang bocor ke training data — adalah kegagalan yang membuat public benchmark diam-diam tidak bermakna, dan probe paling tajam untuknya membutuhkan loss milik model sendiri, yang tidak dikembalikan chat API mana pun. Ini adalah cross-entropy per token dari Bab 8, diarahkan ke pertanyaan tentang memori:
def nll(text: str) -> float:
"""Mean negative log-likelihood per token, in nats."""
ids = tok(text, return_tensors="pt").input_ids.to(model.device)
with torch.no_grad():
out = model(ids, labels=ids)
return float(out.loss)Sepuluh pasangan kalimat: lima ada di setiap crawl web sejak web ada, lima ditulis untuk bab ini pagi ini, masing-masing dipasangkan dengan versi yang dirumuskan ulang dengan konten sama.
| set | wording kanonis | dirumuskan ulang | gap |
|---|---|---|---|
| terkenal, mean dari 5 | 1.21 | 3.03 | +1.83 |
| baru, mean dari 5 | 5.02 | 5.96 | +0.93 |
Model empat kali lebih terkejut oleh kalimat yang ditulis pagi ini daripada oleh kalimat yang sudah dilihatnya sejuta kali, dan perumusan ulang biayanya dua kali lebih besar pada kalimat terkenal — biaya ekstra itulah bagian yang dihafal, bukan dipahami. Loss absolut mencampuradukkan memorisasi dengan kewajaran bahasa biasa, jadi gap adalah statistik yang lebih baik dan continuation test lebih baik lagi. Beri enam kata pertama:
famous "Permission is hereby granted, free of"
-> "charge, to any person obtaining a copy of this software and associated
documentation files (the "
famous "All human beings are born free"
-> "and equal in dignity and rights. The right to life, liberty, and security"
fresh "All evaluation harnesses are born tiny"
-> ", and the most common way to measure their size is by using a ruler."Tiga dari lima string terkenal dilanjutkan word-perfect dari enam kata; tidak satu pun dari lima yang baru melakukannya. Itu model setengah miliar parameter yang melafalkan MIT License. Jika benchmark kamu ada di web publik, anggap ia ada di weights. Itu juga argumen untuk seluruh bab ini: golden set yang kamu tulis dari datamu sendiri, dijauhkan dari repository mana pun yang dibaca crawler, adalah satu-satunya test set yang bisa kamu yakini tidak pernah dilatih padanya.
Apa yang sebenarnya diukur public benchmarks
Tautan ke bagian: Apa yang sebenarnya diukur public benchmarksBenchmark itu tetap layak dibaca, selama kamu membaca apa yang diukur masing-masing alih-alih angka tunggal yang ditempelkan padanya.
| benchmark | apa yang diukur | angka dari paper-nya |
|---|---|---|
| MMLU | pengetahuan multiple-choice di 57 mata pelajaran | GPT-3 mengalahkan peluang acak "hampir 20 percentage points secara rata-rata"7 |
| HELM | banyak metric × banyak skenario, distandarkan | cakupan skenario inti naik dari 17.9% menjadi 96.0%8 |
| Chatbot Arena | preferensi manusia pairwise crowdsourced | lebih dari 240K suara; suara crowd "sangat selaras" dengan pakar9 |
| SWE-bench | menyelesaikan issue GitHub nyata, dinilai oleh test repo | 2,294 problem; model terbaik saat itu menyelesaikan "hanya 1.96%"10 |
| τ-bench | penggunaan tool dengan simulated user dan policy domain | gpt-4o ≈ 61% pass^1, ≈ 25% pass^8 di retail4 |
| WebArena | tugas long-horizon pada website yang berfungsi | agent GPT-4 terbaik 14.41% dibanding 78.24% untuk manusia11 |
| OSWorld | tugas desktop dan OS nyata lintas aplikasi | 369 tugas; model terbaik 12.24%, manusia 72.36%12 |
| GAIA | pertanyaan yang mudah bagi orang, sulit bagi assistant | 466 pertanyaan; manusia 92%, GPT-4 dengan plugin 15%13 |
| AgentBench | penalaran agent di 8 environment berbeda | gap besar antara model komersial dan model terbuka14 |
| AgentHarm | apakah agent akan menjalankan tugas multi-step berbahaya | 110 tugas berbahaya di 11 kategori harm15 |
Ambil tabelnya, bukan satu baris mana pun. Benchmark agentic semuanya menempatkan manusia jauh di atas model, yang merupakan kebalikan dari benchmark pengetahuan dan ringkasan satu kalimat terbaik tentang posisi bidang ini; angkanya menua dalam hitungan bulan, jadi kutip dengan tanggal saat kamu membacanya; dan semuanya mengukur tugas yang bukan milikmu.
Metric yang menentukan di produksi
Tautan ke bagian: Metric yang menentukan di produksiAkurasi adalah metric yang kamu perdebatkan. Inilah metric yang menentukan apakah sesuatu dikirim. Keempatnya jatuh dari dua ratus run yang sudah diukur.
Biaya per tugas terselesaikan, bukan per call. Agent berbiaya $0.001345 per attempt dan $0.005172 per tugas yang benar-benar terselesaikan — 3.85 kali lebih mahal, karena tiga perempat attempt tidak menghasilkan apa pun. Latensi berperilaku sama: 1,213 ms per attempt, 4,667 ms per tugas terselesaikan. Setiap retry, setiap re-ask, setiap trajektori yang ditinggalkan ada pada angka kedua dan tidak terlihat pada angka pertama.
Diagnostik yang mengalahkan akurasi. Dalam 123 dari 200 attempt, agent menjawab tanpa memanggil satu tool pun — ia menebak, bukan melihat. Jika dipisah berdasarkan itu:
answered without reading anything 8/123 = 6.5 % [3.3, 12.3]
answered after reading something 44/77 = 57.1 % [46.0, 67.6]Intervalnya bahkan tidak mendekati saling bersentuhan. Itu lebih berharga daripada agregat 26%, karena ia menamai hal yang harus diperbaiki — model tidak gagal bernalar, ia gagal melihat — dan perbaikannya ada di harness, bukan model. Satu caveat yang bab ini utangkan kepada standarnya sendiri: dua kelompok itu adalah tugas yang berbeda, bukan tugas yang sama yang dipasangkan, jadi sebagian gap mungkin karena ia melewati tool justru pada pertanyaan yang ia anggap sulit. Split ini diagnostik, bukan klaim kausal.
Human intervention rate adalah metric yang pertama ditanyakan pembeli: berapa fraksi run yang berhenti pada approval, guardrail, atau handoff. Interupsi bertipe dari Bab 23 membuatnya bisa dihitung, dan dihitung per jenis tugas dan per minggu, itulah yang memisahkan agent yang belajar pekerjaannya dari agent yang diam-diam menjadi antrean.
Abandonment adalah yang tidak bisa dilihat suite offline mana pun: pengguna yang membaca jawaban, menutup tab, dan mengerjakan tugasnya sendiri. Evaluasi offline adalah gate; evaluasi produksi adalah sampel kontinu dari traffic nyata, diberi skor dengan grader yang sama plus empat metric ini.
Dan aturan yang diwarisi dari Bab 17: jangan pernah assert pada output persis. Assert pada properti — JSON valid, schema benar, tool yang tepat dipanggil, angka dalam toleransi, substring wajib hadir. Kolom exact-match di bagian atas bab ini adalah yang terjadi saat aturan itu dilanggar.
Apa yang kamu kirim ke pihak ketiga
Tautan ke bagian: Apa yang kamu kirim ke pihak ketigaMengevaluasi pemasok bukan hanya soal akurasi, dan ini adalah paruh kedua etika kursus ini, dengan heading sendiri alih-alih appendix.
Ukur biasnya, jangan mengasumsikannya. Apa pun yang kamu yakini tentang perilaku model pada nama, dialek, gender, atau kebangsaan, itu adalah properti terukur dari pipeline kamu, dan instrumennya adalah yang sudah kamu punya: ambil golden set kamu, variasikan hanya atributnya, bandingkan secara berpasangan. HELM ada persis karena akurasi saja dilaporkan di tempat bias, toxicity, calibration, dan robustness juga bisa diputuskan.8 Model card vendor adalah titik awal, bukan bukti tentang input kamu.
Kontaminasi juga pertanyaan untuk pemasok. Probe di atas adalah alasan untuk bertanya sebuah angka yang dipublikasikan diukur pada apa, dan kapan data model dipotong.
Retention, training, dan residency, dibaca pada 7 September 2026. Ini berubah, jadi catat tanggal di samping jawabannya. Halaman policy Anthropic menyatakan: "Secara default, kami tidak akan menggunakan input atau output Anda dari produk komersial kami (mis. Claude for Work, Anthropic API, Claude Gov, dll.) untuk melatih model kami", dengan pengecualian konten yang kamu kirim secara eksplisit sebagai feedback, yang disimpan "hingga 5 tahun".16 Dokumentasi data controls OpenAI menyatakan bahwa "data yang dikirim ke OpenAI API tidak digunakan untuk melatih atau meningkatkan model OpenAI (kecuali kamu secara eksplisit opt in untuk berbagi data dengan kami)", menjelaskan retention default tiga puluh hari untuk abuse-monitoring logs, dan menawarkan Zero Data Retention, yang "mengecualikan customer content dari abuse monitoring logs", plus data residency yang dapat dikonfigurasi di daftar region.17
Empat pertanyaan yang harus didapatkan tertulis sebelum production call pertama, karena masing-masing punya owner berbeda: apakah data saya digunakan untuk training; berapa lama data itu disimpan dan oleh siapa; di mana ia diproses dan disimpan; dan apa yang terjadi pada semuanya jika saya menggunakan reseller, gateway, atau aggregator alih-alih provider secara langsung. Yang terakhir adalah tempat sebagian besar kejutan hidup, dan tidak ada benchmark yang akan memberi tahu kamu.
Ke mana ini berlanjut
Tautan ke bagian: Ke mana ini berlanjutSekarang kamu punya instrumennya: golden set milikmu, interval pada setiap angka, paired test untuk setiap perbandingan, pass^k untuk run yang tidak kamu tunjukkan kepada siapa pun, judge yang terukur, dan probe untuk apakah skor publik berarti apa-apa. Klaim penutup Bab 23 sekarang bisa diperiksa alih-alih diasersi — harness membuat agent bisa diatur, bukan benar — dan memeriksanya membutuhkan dua ratus run dan delapan menit.
Ada satu properti agent yang tidak diukur semua itu, dan itu properti yang membuat orang dipecat.
Setiap tugas dalam golden set bab ini ditulis oleh saya, dan setiap file yang dibaca agent ditulis oleh saya. Tidak ada apa pun di direktori itu yang mencoba melakukan apa pun. Ubah satu baris dalam satu file yang diminta untuk dibaca agent — sebuah baris yang diakhiri dengan instruksi yang dialamatkan kepada apa pun yang membacanya berikutnya — dan agent yang mendapat skor 26% akan mengikutinya dengan tool yang sama, permission yang sama, dan trace bersih yang sama, dan setiap angka dalam bab ini akan tetap persis di tempatnya. Evaluation suite mengukur seberapa sering sistem mencapai tujuanmu. Ia tidak mengukur seberapa mudah orang lain bisa menggantinya dengan tujuan mereka.
Bab 30 adalah itu: prompt injection, trifecta mematikan dari data pribadi, konten tidak tepercaya, dan komunikasi eksternal, serta berapa biaya memberi agent permission nyata. Ia dibuka dengan pengamatan yang dihindari bab ini — bahwa passing score yang sama kompatibel dengan agent yang melakukan persis apa yang ditulis attacker dalam file yang diminta untuk dibacanya.
Sumber dan metode
Tautan ke bagian: Sumber dan metodeSetiap angka di atas diproduksi di satu mesin dan tidak ada yang menyentuh endpoint berbayar. Agent adalah loop Bab 23 dengan dua dari empat tool-nya di atas direktori lima file; model di balik port adalah Qwen/Qwen2.5-0.5B-Instruct, diekspos melalui server kecil berbentuk sama seperti endpoint chat completions persis seperti di Bab 23, tetapi dalam half precision pada satu GPU konsumen alih-alih CPU bab itu. Biaya menggunakan rate dari Bab 16 — $2.00 per juta input tokens dan $12.00 per juta output — diterapkan pada jumlah token terukur. Run berulang menggunakan temperature 0.7 dengan seed tetap sehingga seluruh set bisa direproduksi; tabel empat arm bersifat greedy. Interval adalah Wilson pada 95%, perbandingan berpasangan adalah exact sign test dua sisi pada pasangan discordant; interval Wilson adalah milik Bab 4 dan exact paired sign test adalah milik Bab 15, keduanya digunakan ulang tanpa perubahan. Label manusia adalah label saya, diterapkan pada enam puluh jawaban di bawah aturan tertulis yang dikutip dalam teks. Baca setiap besaran di sini sebagai properti model setengah miliar parameter dan setiap metode sebagai transferable: model yang lebih besar menaikkan semua angka dan tidak mengubah satu pun instrumen.
Referensi
Tautan ke bagian: Referensi-
OpenAI, A practical guide to building agents (PDF), halaman 8, dibaca 7 September 2026. Sumber urutan tiga langkah yang dikutip di atas dan saran pendamping untuk "membangun prototype agent kamu dengan model paling capable untuk setiap tugas guna menetapkan baseline performa. Dari sana, coba tukar dengan model yang lebih kecil untuk melihat apakah mereka masih mencapai hasil yang dapat diterima." Bab 22 dan 25 mengutip halaman definisional dan orchestration-nya. ↩
-
Schaeffer, R., Miranda, B. dan Koyejo, S. Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004 (2023). Argumen bahwa metric diskontinu all-or-nothing menciptakan lompatan semu dari peningkatan underlying yang mulus, dengan audit BIG-Bench yang dikutip di Bab 10. Kehati-hatian mereka sendiri layak diulang: tidak ada dalam paper itu yang mengklaim model besar tidak bisa menampilkan kemampuan emergent. ↩
-
Kalai, A. T., Nachum, O., Vempala, S. S. dan Zhang, E. Why Language Models Hallucinate. arXiv:2509.04664 (2025). Argumen bahwa benchmark yang memberi skor benar-atau-salah memberi reward pada tebakan dibanding abstention, dan remedy yang diusulkan berupa "memodifikasi scoring benchmark yang sudah ada yang misaligned tetapi mendominasi leaderboard, alih-alih memperkenalkan evaluasi halusinasi tambahan". Bab 19 mengutipnya dari sisi retrieval; ini adalah sisi evaluasi dari klaim yang sama. ↩
-
Yao, S., Shinn, N., Razavi, P. dan Narasimhan, K. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains. arXiv:2406.12045 (2024). Asal
pass^k, didefinisikan seperti dikutip di atas, dengan kedua estimator dicetak berdampingan dalam paper; headline abstract-nya adalah bahwa agent function-calling state-of-the-art "berhasil pada <50% tugas, dan cukup tidak konsisten (pass^8 <25% di retail)", dan section 1 memberikan angka gpt-4o ≈61%pass^1dan ≈25%pass^8pada τ-retail. Estimatorpass@kyang dikontraskannya berasal dari Chen, M. et al., Evaluating Large Language Models Trained on Code, arXiv:2107.03374 (2021). ↩ ↩2 ↩3 -
Zheng, L. et al. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685 (2023). Sumber tiga bias bernama, definisi konsistensi yang digunakan di atas ("persentase kasus ketika judge memberi hasil konsisten saat menukar urutan dua assistant"), temuan bahwa "hanya output GPT-4 yang menghasilkan hasil konsisten pada lebih dari 60% kasus" dengan 65.0% naik menjadi 77.5% lewat few-shot, dan mitigasi swap-and-require-agreement yang dikutip verbatim. Hasil positifnya juga penting: judge GPT-4 mencapai "tingkat agreement yang melebihi 80%" dengan evaluasi manusia, "tingkat yang sama dengan agreement manusia-manusia" — itulah alasan menggunakan judge sama sekali, dan alasan untuk mengukur milikmu. ↩ ↩2 ↩3
-
EleutherAI, Language Model Evaluation Harness, README proyek dibaca 7 September 2026: "lebih dari 60 benchmark akademik standar untuk LLM, dengan ratusan subtask dan varian yang diimplementasikan", dan "backend untuk Open LLM Leaderboard populer milik Hugging Face". Invocation
lm_evalyang dikutip di atas adalah contoh dari README sendiri. Liang, P. et al., Holistic Evaluation of Language Models, arXiv:2211.09110 (2022), adalah runner standar lainnya dan bacaan yang lebih baik tentang desain evaluasi. ↩ -
Hendrycks, D., Burns, C., Basart, S., Zou, A., Mazeika, M., Song, D. dan Steinhardt, J. Measuring Massive Multitask Language Understanding. arXiv:2009.03300 (2020). 57 tugas; klaim abstract bahwa model GPT-3 terbesar "meningkat dibanding random chance hampir 20 percentage points secara rata-rata" adalah pengingat berguna tentang betapa barunya saturasi benchmark ini. ↩
-
Liang, P. et al. Holistic Evaluation of Language Models. arXiv:2211.09110 (2022). Tujuh metric — akurasi, calibration, robustness, fairness, bias, toxicity, dan efficiency — di atas 16 skenario inti dan 30 model, dengan angka cakupan yang dikutip di atas. Alasan membacanya adalah framing-nya: mana dari tujuh yang kamu laporkan adalah pilihan tersendiri. ↩ ↩2
-
Chiang, W.-L. et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132 (2024). Lebih dari 240K suara saat penulisan, preferensi pairwise crowdsourced, dan klaim bahwa "suara manusia crowdsourced sangat selaras dengan expert raters". ↩
-
Jimenez, C. E., Yang, J., Wettig, A., Yao, S., Pei, K., Press, O. dan Narasimhan, K. SWE-bench: Can Language Models Resolve Real-World GitHub Issues? arXiv:2310.06770 (2023). 2,294 problem dari 12 repository Python, dinilai oleh test milik repository itu sendiri, dengan model terbaik pada saat itu menyelesaikan "hanya 1.96%". Bab 23 menggunakannya untuk makna lain dari kata "harness". ↩
-
Zhou, S. et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. arXiv:2307.13854 (2023). Website berfungsi di empat domain, dengan agent GPT-4 terbaik pada 14.41% dibanding 78.24% untuk manusia. ↩
-
Xie, T. et al. OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments. arXiv:2404.07972 (2024). 369 tugas pada operating system nyata; manusia di atas 72.36%, model terbaik 12.24%, dengan GUI grounding disebut sebagai gap utama. ↩
-
Mialon, G., Fourrier, C., Swift, C., Wolf, T., LeCun, Y. dan Scialom, T. GAIA: A Benchmark for General AI Assistants. arXiv:2311.12983 (2023). 466 pertanyaan, manusia pada 92% melawan 15% untuk GPT-4 dengan plugin — pernyataan terbitan paling bersih tentang gap antara apa yang mudah bagi orang dan apa yang mudah bagi assistant. ↩
-
Liu, X. et al. AgentBench: Evaluating LLMs as Agents. arXiv:2308.03688 (2023). Delapan environment berbeda, dan disparitas signifikan antara model komersial teratas dan model open-source berukuran sebanding. ↩
-
Andriushchenko, M. et al. AgentHarm: A Benchmark for Measuring Harmfulness of LLM Agents. arXiv:2410.09024 (2024). 110 tugas agent yang secara eksplisit berbahaya (440 dengan augmentasi) di 11 kategori harm, dengan temuan bahwa model terdepan "secara mengejutkan patuh terhadap permintaan agent berbahaya tanpa jailbreaking" dan bahwa template jailbreak universal sederhana transfer ke agent sambil mempertahankan capabilities mereka. Ini jembatan ke Bab 30: capability benchmark dan harm benchmark mengukur sistem yang sama dan berbeda pendapat tentang apakah sistem itu siap. ↩
-
Anthropic, Is my data used for model training?,
privacy.claude.com, dibaca 7 September 2026. Dikutip verbatim di atas, termasuk pengecualian feedback dan jendela penyimpanan lima tahun untuk feedback yang dikirim. ↩ -
OpenAI, Your data (dokumentasi API data controls),
developers.openai.com, dibaca 7 September 2026. Sumber pernyataan default no-training, retention abuse-monitoring tiga puluh hari, deskripsi Zero Data Retention dan daftar endpoint yang eligible, serta region data residency. ↩