Cách dựng bộ eval cho agent vận hành mạng (test case, metric, LLM-as-judge, regression) để đổi prompt, model hay tool mà vẫn biết agent tốt lên hay tệ đi.
Agent không có "unit test pass/fail" rõ ràng như code thường: cùng một input có thể ra output khác nhau, và một thay đổi nhỏ ở prompt hoặc mô tả tool có thể làm hỏng một case trước đó vẫn chạy đúng. Eval là bộ test case cố định kèm cách chấm điểm tự động, chạy lại mỗi khi đổi prompt, model, tool hay phiên bản SDK.
flowchart LR
A["Bộ case (JSONL)"] --> B["Chạy agent (tool mock / lab)"]
B --> C["Transcript: tool calls + output"]
C --> D["Grader code"]
C --> E["LLM-as-judge"]
D --> F["Điểm từng case"]
E --> F
F --> G{"So với baseline"}
G -->|"tụt"| H["Chặn merge, xem case fail"]
G -->|"ổn"| I["Cập nhật baseline"]
Mỗi sự cố thật (agent trả sai, gọi sai tool) thì thêm một case vào bộ eval trước khi sửa prompt.
Chạy eval trong CI khi đổi prompt, mô tả tool, model id, phiên bản SDK. Bộ case nhanh dùng tool mock, bộ case chậm chạy trên lab (containerlab) theo lịch.
Lưu transcript đầy đủ của mỗi lần chạy để so sánh diff khi một case chuyển từ pass sang fail.
So sánh với baseline theo từng case, không chỉ nhìn điểm trung bình: tổng tăng 2% nhưng một case an toàn bị fail thì vẫn là regression.