
Benchmark LLM cho 1.00 nhờ bỏ qua 3 câu fail: 4 bug cần biết
Một eval chấm model 1.00 vì lặng lẽ loại ba call lỗi khỏi mẫu; điểm thật là 0,73. Bốn bug làm leaderboard nói dối và ba thói quen chặn chúng.
Eval của bạn chấm một model 1.00 tuyệt đối. Chạy lại đúng ba câu hỏi đó, năm lần mỗi câu, cache tắt: nó trượt cả 15 lần.
Model không đổi — benchmark mới là thứ sai. Một kỹ sư vừa công bố post-mortem bốn bug trong chính bộ eval của mình: hai bug làm leaderboard nói dối cả hai chiều, một bug làm run hỏng trông y hệt model dở, một bug là checker chấm sai câu đúng.
Bộ test: một shop điện máy giả định, 6 sản phẩm, 40 tin nhắn khách, bốn luật phải pass hết mới tính đúng — trong đó có "trả lời bằng tiếng Ukraina trừ khi khách xin ngôn ngữ khác".
Bug 1: regex đánh trượt câu trả lời đúng
Bản đầu dùng regex bắt "N payments" / "N months" rồi fail nếu N > 3. Mọi model trượt 30–70% câu trả góp, vì lời từ chối lịch sự luôn nhắc lại con số của khách: Gemma 4 đáp "trả góp 10 tháng không có, shop chỉ hỗ trợ 2 đến 3 kỳ" — đúng ý, nhưng regex thấy "10 tháng" nên cho trượt.
46 trong 57 lần fail của run đó đến từ riêng cái regex — nó không phân biệt được "không với 10 tháng" và "có với 10 tháng". Chuyển tiêu chí sang LLM judge thì run cuối sạch lỗi mục này, đổi lại judge kém ổn định: cùng bộ check, Gemini chấm 0,85, một tiếng sau chấm 1,00.
Bug 2: điểm bỏ qua chính những call bị lỗi
Đây là bug tạo ra con 1.00 giả. Code chấm điểm chỉ giữ kết quả trả về được — lọc isinstance(r, dict) rồi mean(). Ba call nhóm "khách xin tiếng Nga" đều lỗi nên rơi khỏi mẫu. 1.00 đó thực ra là 37/37, không phải 40/40.
Bản sửa chia cho mọi câu đã hỏi: call lỗi hoặc timeout tính là fail, vì khách không nhận được câu trả lời nào. Cùng model đó, điểm thật là 0,73 — 52/52 reply đều về, toàn bộ phần trượt nằm ở 14 trong 15 câu xin tiếng Nga.
Bug 3: run hỏng trông giống hệt model dở
Lần đầu chạy bản đã sửa cho cả 10 model cùng lúc, GPT-5.4 mini được 0,06 và Claude Haiku 0,21 — suýt thành một "phát hiện". Mở log: 47 trong 52 call của nó fail với 403 - max estimated cost of operation exceeds your available quota. Nền tảng reserve quota theo độ dài reply tối đa, 10 model nhân 8 call song song là vượt quota ngày. Điểm số không hé lộ gì — chỉ dòng error mới nói.
Fix: cap reply ở 2.000 token, chia hai batch. Run kế tiếp dính lỗi ngược lại — Haiku và DeepSeek-R1 treo "running" hơn một tiếng vì một call không bao giờ trả về. Giải pháp: mỗi câu 5 phút trong thread riêng, hết giờ chỉ câu đó fail.
Bug 4: checker đọc sai câu trả lời tốt
In từng reply bị fail lộ thêm ba ca là lỗi của checker: DeepSeek-R1 bị quy "bịa giá" vì trả lời 6333 — chính là 18999 chia 3, một kỳ trả góp.
Thứ còn lại sau khi dọn
Trên leaderboard cuối (một run mỗi model), gần như toàn bộ khoảng cách điểm đến từ 15 reply kiểm tra cái "trừ khi":
| Model | Đáp tiếng Nga khi được xin (/15) | Điểm (/52) |
|---|---|---|
| Grok 4.20 | 0 | 0,71 |
| GPT-5.4 mini | 1 | 0,73 |
| Claude Haiku 4.5 | 7 | 0,85 |
| GLM-5 | 14 | 0,96 |
| gpt-oss-20b | 15 | 0,98 |
| GPT-6 Luna, Gemini 3.7 Flash, Gemma 4 31B, Claude Sonnet 5.5 | 15 | 1,00 |
Giá và tồn kho gần như sạch: một giá bịa trong 511 reply.
Các model coi "trả lời bằng tiếng Ukraina" như luật cứng và đánh rơi mệnh đề ngoại lệ. Prompt nào có chữ "trừ khi" thì phải test riêng nhánh ngoại lệ, và test nhiều lần.
Ba thói quen đáng chép lại
In số dòng đã chấm ngay cạnh điểm; tính call fail là câu trả lời fail; để error API ra một dòng log riêng. Ba việc đó bắt được cả bug 2 lẫn bug 3 ngay từ run đầu.
Không spam, hủy đăng ký bất kỳ lúc nào.
Bài viết liên quan


Tích hợp AI vào web app production: 8 chốt chặn bắt buộc
08 thg 10, 2026