Dự án tổng hợp: eval agent đổi trả có công cụ, người dùng giả, ba grader (outcome, không nói dối, an toàn trước prompt injection), pass^k, bootstrap theo cụm, chi phí trên mỗi task thành công và báo cáo phát hành; kèm câu hỏi phỏng vấn Evals Engineer thường gặp.
Khi bộ eval có hàng nghìn task chạy mỗi đêm, eval trở thành hạ tầng. Phân tầng smoke/regression/full, runner có cache, giới hạn đồng thời và thử lại, manifest phiên bản để tái lập, xử lý task flaky, ước lượng ngân sách và tổ chức quyền sở hữu eval.
Bộ eval offline tốt nhất vẫn chỉ là mẫu của quá khứ. Chạy judge trên traffic thật và hiệu chỉnh trọng số, tín hiệu ngầm của người dùng, A/B test có cỡ mẫu, kiểm tra SRM và tránh bẫy nhìn trộm, biểu đồ kiểm soát phát hiện chất lượng trôi.
Khi đầu vào là đối kháng, eval đổi bản chất. Mô hình mối đe doạ theo OWASP Top 10 cho LLM 2025, đo prompt injection gián tiếp bằng canary vô hại, cân bằng tỉ lệ tấn công thành công với từ chối nhầm, red team thủ công, tự động và bằng garak, PyRIT, promptfoo.
Một bộ dữ liệu nội bộ khác một benchmark nhiều người dùng. Construct validity, bão hoà và vòng đời benchmark, phát hiện nhiễm dữ liệu bằng trùng n-gram và câu diễn đạt lại, canary string, mô hình Rasch để ước lượng độ khó và chọn tập con giữ đúng thứ hạng.
Lỗi của chatbot thường chỉ lộ ra sau vài lượt. Kịch bản có persona, mục tiêu và thông tin ẩn; người dùng giả lập bằng LLM; điều kiện dừng; grader cấp hội thoại; kiểm tra người dùng giả có giống người thật không; replay tiền tố hội thoại thật.
Agent gọi công cụ qua nhiều bước nên không chấm như chatbot. Môi trường có trạng thái reset mỗi trial, chấm trạng thái thật thay cho lời agent tự nhận, bắt agent nói dối, đo pass@1 và pass^k, ma trận lỗi chuyển trạng thái, eval agent có công cụ bằng Inspect.
Khi điểm judge quyết định phát hành, judge phải chịu được áp lực. So judge với trần đồng thuận người–người, hội đồng judge khác họ mô hình, xếp hạng phiên bản bằng Bradley-Terry có khoảng tin cậy, đo thiên kiến độ dài bằng hồi quy, chống Goodhart và trôi judge.
Khi câu hỏi theo nhóm, mỗi câu chạy nhiều lần và bạn thử cả chục biến thể prompt, công thức sai số đơn giản không còn đúng. Sai số theo cụm, phân rã phương sai để chọn số trial, power analysis cho MDE, và kiểm soát phát hiện sai bằng Holm, Benjamini-Hochberg.
Loạt nâng cao bắt đầu ở đâu loạt cơ bản dừng lại. Thang trưởng thành của hệ thống eval, những gì thay đổi khi đánh giá agent và hội thoại nhiều lượt, các nhánh nghề (eval sản phẩm, eval năng lực, eval an toàn), danh sách bài báo nên đọc và lộ trình 10 bài.
Ghép mọi thứ đã học thành một dự án chạy được: bộ dữ liệu có regression và capability suite, grader cho từng nhóm lỗi, chạy nhiều trial, báo cáo có khoảng tin cậy Wilson và so sánh ghép cặp, cổng chặn phát hành với GitHub Actions, unit test cho chính grader và mẫu báo cáo dạng câu chuyện.
Chuyển harness tự viết sang công cụ chuẩn: Inspect AI với Sample, solver, scorer tự viết, epochs, thử bằng mô hình giả mockllm; promptfoo so sánh hai prompt bằng YAML với assertion code và llm-rubric; cách chọn Inspect, promptfoo, DeepEval, Langfuse, Braintrust.
Hệ thống RAG hỏng ở hai nơi: tìm sai tài liệu hoặc trả lời sai dù tài liệu đúng. Tự viết recall@k, precision@k, MRR, nDCG; so sánh hai retriever và thấy bộ câu hỏi trùng từ thổi phồng điểm thế nào; đo faithfulness bằng tách mệnh đề, các metric kiểu RAGAS và ma trận chẩn đoán lỗi.
Khi code không chấm được, dùng LLM chấm LLM — nhưng chỉ sau khi kiểm chứng. Thiết kế judge nhị phân cho đúng một nhóm lỗi, prompt có định nghĩa và ví dụ, structured output; chia nhãn train/dev/test, đo TPR và TNR, chống thiên kiến vị trí và độ dài, hiệu chỉnh tỉ lệ đạt kèm khoảng tin cậy.
Grader bằng code rẻ, nhanh, tất định — luôn là lựa chọn đầu tiên. Chuẩn hoá chuỗi, exact match và token F1 kiểu SQuAD, kiểm tra JSON schema, chấm lời gọi công cụ, chạy unit test cho code do mô hình sinh, ước lượng không chệch pass@k, và vì sao BLEU/ROUGE không đo được chất lượng.
Hoạt động có giá trị nhất trong eval là đọc dữ liệu. Quy trình error analysis từng bước: lấy mẫu trace, ghi chú lỗi đầu tiên (open coding), gom nhóm thành bảng phân loại lỗi (axial coding), đếm và ưu tiên, dừng khi bão hoà — kèm công cụ gán nhãn tối giản và phân tích bằng pandas.
Bộ eval tốt quyết định mọi thứ phía sau. Lấy câu hỏi từ production, ticket và chuyên gia; sinh dữ liệu tổng hợp có kiểm soát bằng chiều và tuple; viết hướng dẫn gán nhãn, đo đồng thuận bằng Cohen's kappa; chia dev/test phân tầng và phiên bản hoá dữ liệu.