Kỹ thuật của Anthropic: Hướng dẫn thực tiễn và phương pháp luận cho đánh giá (Evals) AI agent
(anthropic.com)Tóm tắt:
- Chỉ dùng các benchmark LLM hiện có thì khó đo chính xác hiệu năng của “AI agent” có khả năng sử dụng công cụ và suy luận nhiều bước.
- Đánh giá agent nên kết hợp Unit Tests và Integration Tests tương tự như kiểm thử phần mềm.
- Kết hợp chấm điểm bằng mã có tính quyết định (Code-based) và chấm điểm dựa trên mô hình bằng LLM (Model-based) là cách hiệu quả.
- Cần chuyển từ “Capability Evals” sang “Regression Evals” theo vòng đời phát triển của agent.
Tóm tắt chi tiết:
-
Vì sao đánh giá AI agent khó
Khác với chatbot đơn giản (Single-turn), agent sử dụng công cụ, thay đổi trạng thái của môi trường và thực hiện công việc qua nhiều bước (Multi-turn). Vì vậy, chỉ kiểm tra câu trả lời cuối cùng là không đủ; cần đánh giá tổng thể xem agent có dùng đúng công cụ hay không, quy trình có hiệu quả hay không, v.v. -
Cấu trúc của đánh giá agent (Eval)
Một hệ thống đánh giá hiệu quả gồm các thành phần cốt lõi sau.
- Task: Một test case đơn lẻ có đầu vào được xác định và tiêu chí thành công rõ ràng.
- Grader: Logic dùng để chấm điểm kết quả thực hiện của agent.
- Transcript: Toàn bộ bản ghi thực thi, bao gồm quá trình suy nghĩ của agent, các lệnh gọi công cụ, kết quả trung gian, v.v.
- Outcome: Trạng thái cuối cùng của môi trường sau khi agent chạy xong (ví dụ: một đặt chỗ đã thực sự được tạo trong DB hay chưa).
- So sánh các loại grader
Anthropic khuyến nghị kết hợp ba loại grader sau.
| Loại | Mô tả | Ưu điểm | Nhược điểm |
|---|---|---|---|
| Code-based | So khớp chuỗi, regex, phân tích tĩnh, chạy unit test, v.v. | Nhanh, rẻ, khách quan, có thể tái lập | Có thể bỏ sót sắc thái phức tạp, thiếu linh hoạt |
| Model-based | Dùng LLM làm giám khảo (Judge) để chấm theo rubric | Linh hoạt, nắm bắt được sắc thái, phù hợp với câu hỏi mở | Có thể không mang tính quyết định, tốn chi phí, cần con người hiệu chỉnh |
| Human | Review bởi chuyên gia, crowdsourcing | “Gold standard” về chất lượng | Rất chậm và tốn kém |
- Ví dụ đánh giá coding agent (cấu hình YAML)
Khi đánh giá coding agent, không chỉ xem mã có chạy được hay không (kiểm thử mang tính quyết định), mà còn cần kiểm tra cả coding style hoặc vi phạm bảo mật (phân tích tĩnh/chấm bằng LLM). Dưới đây là một ví dụ giả định về cấu hình đánh giá cho task “sửa lỗ hổng bảo mật”.
task:
id: "fix-auth-bypass_1"
desc: "sửa lỗ hổng bỏ qua xác thực xảy ra khi trường mật khẩu để trống"
graders:
# 1. Kiểm thử mang tính quyết định: xác nhận test code thực sự vượt qua
- type: deterministic_tests
required: [test_empty_pw_rejected.py, test_null_pw_rejected.py]
# 2. Chấm theo rubric bằng LLM: đánh giá chất lượng và style mã
- type: llm_rubric
rubric: prompts/code_quality.md
# 3. Phân tích tĩnh: chạy linter và công cụ bảo mật
- type: static_analysis
commands: [ruff, mypy, bandit]
# 4. Kiểm tra trạng thái: xác nhận log bảo mật đã được ghi đúng
- type: state_check
expect:
security_logs: {event_type: "auth_blocked"}
# 5. Xác nhận việc sử dụng công cụ: có đọc và sửa các file cần thiết hay không
- type: tool_calls
required:
- {tool: read_file, params: {path: "src/auth/*"}}
- {tool: edit_file}
- {tool: run_tests}
# Các metric cần theo dõi
tracked_metrics:
- type: transcript
metrics:
- n_turns # số lượt
- n_toolcalls # số lần gọi công cụ
- n_total_tokens # lượng token sử dụng
- type: latency
metrics:
- time_to_first_token
- Chỉ số đánh giá (Metrics)
Để xử lý đặc tính không mang tính quyết định của agent, ngoài độ chính xác đơn thuần còn sử dụng các chỉ số sau.
- pass@k: Xác suất thành công ít nhất một lần trong k lần thử (đo năng lực khám phá).
- pass^k: Xác suất tất cả các lần thử đều thành công trong k lần thử (đo tính nhất quán/độ tin cậy).
- Công cụ và framework
Để xây dựng hệ thống đánh giá, bài viết đề xuất sử dụng các công cụ như Harbor (chạy trong môi trường container), Promptfoo (cấu hình test dựa trên YAML), Braintrust, LangSmith, hoặc xây dựng framework riêng phù hợp với workflow của đội ngũ. Điều quan trọng không phải là framework tự thân, mà là bảo đảm có được các test case chất lượng cao.
1 bình luận
Nội dung rất hay nên mình thêm bản dịch tiếng Hàn.
https://rosettalens.com/s/ko/demystifying-evals-for-ai-agents