Eval là unit test cho prompt
Mọi thay đổi prompt đều phải vượt qua một bộ golden set mới được lên. Mỗi sự cố lại thành một case mới. Còn con LLM ngồi chấm kết quả thì bị đối xử đúng như bản chất của nó: một nhân chứng thiên vị.
4 phút đọcViết từ Seoul và Nha Trang
Trước đây prompt cứ thế mà lên theo cảm tính: chạy thử ba ví dụ, thấy có vẻ ổn hơn, merge. Rồi một lần "chỉnh lại câu chữ cho hay hơn" âm thầm làm hỏng định dạng số trong một pipeline suốt bốn ngày. Giờ thì prompt là code, mà code thì chưa có test là chưa được merge.
Golden set lớn lên từ những vết sẹo
Mỗi pipeline mang theo một bộ cặp input/expected có nhãn. Chẳng ai ngồi xuống soạn ra nó cả; nó bồi đắp dần, mỗi sự cố thêm một case, mỗi test là một lần hệ thống từng tự làm bẽ mặt mình. Pipeline xử lý văn bản lớn nhất của chúng tôi hiện chạy khoảng 3,900 case cho mỗi thay đổi, với số lỗi kỳ vọng đúng bằng không. Con số không đó là bất di bất dịch. Một bộ test dung thứ cho vài lỗi là bộ test chẳng ai buồn đọc.
LLM làm giám khảo, nhưng bị còng tay
Một nửa số case của chúng tôi không có đáp án đúng duy nhất, nên phải để một model chấm chúng. Model giám khảo là một nhân chứng thiên vị, và chúng tôi đối xử với nó đúng như vậy:
Verdict rules:
- Compare A and B for the stated criteria only. Do not reward length.
- TIE is a valid verdict. Prefer TIE over a coin flip.
- Output exactly one line: WINNER: A | B | TIE, then one reason.
(Runner: every pair is judged twice with A and B swapped.
Only a verdict that survives the swap is recorded. ~11% do not.)
- Thiên vị vị trí là có thật. Giám khảo hay ưu ái câu trả lời đứng trước. Giao thức đảo-chỗ-rồi-đối-chiếu xóa sạch loại nhiễu này, đổi lại là gấp đôi số lần gọi giám khảo. Đáng.
- Thiên vị độ dài là có thật. Giám khảo mà không bị ràng buộc thì cứ thấy dài là thưởng điểm. Rubric nói thẳng điều đó, và kết quả bị cắt bớt độ dài trước khi đem chấm.
- Thiên vị dòng họ mình là có thật. Một model chấm điểm rất hào phóng cho chính họ nhà mình, nên ở đâu rủi ro cao thì giám khảo phải khác dòng với model sinh ra kết quả.
Agent phải qua ngưỡng khó hơn
Với tác vụ của agent, chúng tôi không đo pass@k, tức là chỉ cần một trong k lần thử thành công. Chúng tôi đo ngược lại: chạy cùng một tác vụ k lần và bắt buộc lần nào cũng phải thành công thì agent mới được trao quyền tự chủ cho lớp tác vụ đó. Một workflow thành công bốn trên năm lần không phải là xong 80%. Đó là một phiên trực sự cố còn chưa được xếp lịch mà thôi.
Thành quả nhàm chán theo nghĩa đẹp nhất của từ này: refactor prompt, đổi model và chuyển provider trở thành những thay đổi thường ngày có câu trả lời đỏ/xanh rạch ròi, thay vì những cú nhắm mắt đưa chân rồi cả tuần ngồi canh log.