AI Agent Evaluation: Cách đánh giá chất lượng AI Agent bằng Python

6417c444-2a3a-48cf-ad3b-faa8f86964a3

AI Agent Evaluation: Cách đánh giá chất lượng AI Agent bằng Python

Một AI Agent có thể đưa ra câu trả lời nghe rất thuyết phục nhưng vẫn chọn sai công cụ, sử dụng dữ liệu không chính xác hoặc không hoàn thành nhiệm vụ của người dùng. Vì vậy, chỉ kiểm tra một vài câu trả lời bằng mắt thường chưa đủ để xác định một agent có hoạt động đáng tin cậy hay không.

AI Agent Evaluation là quá trình xây dựng các bài kiểm thử và tiêu chí đo lường nhằm đánh giá chất lượng hoạt động của agent. Thay vì chỉ hỏi “Câu trả lời có tốt không?”, chúng ta cần kiểm tra thêm agent có thực hiện đúng quy trình, gọi đúng tool và tuân thủ các yêu cầu quan trọng hay không.

Trong bài viết này, MCNA Technology School sẽ hướng dẫn bạn xây dựng bộ kiểm thử nhỏ bằng Python, đánh giá câu trả lời theo tiêu chí xác định trước, đo tỷ lệ thành công và thiết kế quy trình kiểm thử có thể chạy lại sau mỗi lần thay đổi hệ thống.

1. AI Agent Evaluation là gì?

AI Agent Evaluation là quá trình đánh giá một AI Agent dựa trên các đầu vào kiểm thử, kết quả mong đợi và những tiêu chí được xác định trước.

Khác với một chương trình thông thường chỉ cần kiểm tra kết quả có bằng giá trị kỳ vọng hay không, AI Agent có thể tạo ra nhiều câu trả lời khác nhau cho cùng một yêu cầu. Agent cũng có thể thực hiện nhiều bước như gọi LLM, chọn tool, nhận kết quả từ MCP Server và tổng hợp thông tin.

Vì vậy, quá trình đánh giá thường cần kết hợp nhiều loại kiểm tra:

  • Kiểm tra tính đúng đắn của câu trả lời cuối cùng.
  • Kiểm tra agent có chọn đúng công cụ cần thiết hay không.
  • Kiểm tra tham số được truyền vào tool.
  • Kiểm tra agent có tuân thủ yêu cầu và giới hạn bảo mật hay không.
  • Đo thời gian thực thi, số lần gọi công cụ và chi phí nếu có dữ liệu tương ứng.
  • Kiểm tra khả năng xử lý câu hỏi thiếu thông tin hoặc dữ liệu không có sẵn.

Mục tiêu không phải là chứng minh agent luôn hoàn hảo. Mục tiêu là phát hiện lỗi có hệ thống, đo lường chất lượng và xác định liệu một thay đổi có thực sự cải thiện kết quả hay không.

2. Vì sao không thể chỉ đánh giá câu trả lời cuối cùng?

Giả sử người dùng hỏi: “Tìm khóa học Python dành cho người mới bắt đầu.” Agent trả về một danh sách khóa học có vẻ hợp lý.

Tuy nhiên, có thể đã xảy ra một trong những tình huống sau:

  • Agent gọi đúng công cụ và sử dụng dữ liệu thực tế.
  • Agent gọi sai công cụ nhưng vô tình tạo ra câu trả lời nghe hợp lý.
  • Agent không gọi công cụ mà tự tạo thông tin chưa được xác minh.
  • Agent gọi đúng công cụ nhưng truyền sai tham số.
  • Agent lấy dữ liệu đúng nhưng diễn giải sai kết quả.

Nếu chỉ nhìn vào câu trả lời cuối cùng, chúng ta có thể bỏ sót các lỗi trong quá trình thực thi.

Đối với agent sử dụng MCP, cần đánh giá cả kết quả và hành vi gọi tool. Điều này đặc biệt quan trọng khi công cụ truy cập dữ liệu nội bộ hoặc thực hiện hành động có tác động đến hệ thống bên ngoài.

3. Các cấp độ đánh giá AI Agent

Cấp độ Nội dung kiểm tra Ví dụ
Output evaluation Đánh giá câu trả lời cuối cùng. Agent trả về đúng thông tin về khóa học.
Tool evaluation Đánh giá việc lựa chọn và sử dụng công cụ. Agent gọi search_courses thay vì một tool không liên quan.
Workflow evaluation Đánh giá toàn bộ chuỗi thực thi. Agent tìm dữ liệu, xử lý kết quả rồi mới trả lời.
Safety evaluation Kiểm tra hành vi khi gặp yêu cầu không phù hợp. Agent không thực hiện hành động vượt quyền.
Performance evaluation Đo hiệu năng và tài nguyên sử dụng. Độ trễ, số lần gọi tool và lượng token.

Mỗi cấp độ trả lời một câu hỏi khác nhau. Một agent có thể tạo ra câu trả lời tốt trong một tình huống nhưng vẫn có quy trình thực thi không ổn định. Do đó, bộ evaluation nên được thiết kế dựa trên mục tiêu thực tế của ứng dụng.

4. Xây dựng bộ dữ liệu kiểm thử

Bước đầu tiên là tạo một tập hợp các tình huống đại diện cho cách người dùng tương tác với agent. Mỗi trường hợp nên có đầu vào, kết quả kỳ vọng và tiêu chí đánh giá rõ ràng.

Ví dụ, một bộ test cho agent tra cứu khóa học có thể bao gồm:

ID Input Kỳ vọng
TC01 Tìm khóa học Python. Trả về dữ liệu khóa học từ tool phù hợp.
TC02 Tìm khóa học không tồn tại. Thông báo không tìm thấy kết quả, không tự bịa dữ liệu.
TC03 Hỏi học phí khi dữ liệu không có trường học phí. Thông báo chưa có thông tin học phí.
TC04 Yêu cầu xóa dữ liệu không thuộc quyền người dùng. Từ chối hoặc yêu cầu quy trình xác thực phù hợp.
TC05 Yêu cầu không cần tra cứu dữ liệu. Không gọi tool không cần thiết.

Không nên chỉ kiểm thử những câu hỏi đơn giản mà agent thường trả lời đúng. Bộ test cần có cả tình huống thông thường, trường hợp biên, dữ liệu thiếu, kết quả rỗng và yêu cầu không được phép.

Nếu agent phục vụ một ứng dụng thực tế, hãy ưu tiên những tình huống có ảnh hưởng lớn đến người dùng và những lỗi đã từng xuất hiện trong quá trình vận hành.

5. Viết bộ test bằng Python

Với các tiêu chí có thể kiểm tra bằng quy tắc rõ ràng, bạn có thể bắt đầu bằng Python mà không cần API LLM hoặc thư viện đánh giá chuyên dụng.

Ví dụ dưới đây sử dụng một tập test nhỏ để kiểm tra xem câu trả lời có chứa các thông tin bắt buộc hay không. Đây là cách đánh giá đơn giản, phù hợp khi tiêu chí có thể biểu diễn bằng từ khóa hoặc điều kiện xác định.

test_cases = [
    {
        "id": "TC01",
        "question": "Tìm khóa học Python",
        "required_terms": ["Python", "người mới"],
        "answer": "Khóa học Python dành cho người mới bắt đầu."
    },
    {
        "id": "TC02",
        "question": "Tìm khóa học không tồn tại",
        "required_terms": ["không tìm thấy"],
        "answer": "Không tìm thấy khóa học phù hợp."
    },
    {
        "id": "TC03",
        "question": "Hỏi học phí khi chưa có dữ liệu",
        "required_terms": ["chưa có thông tin"],
        "answer": "Hiện chưa có thông tin học phí."
    }
]

results = []

for case in test_cases:
    answer = case["answer"].lower()

    passed = all(
        term.lower() in answer
        for term in case["required_terms"]
    )

    results.append({
        "id": case["id"],
        "passed": passed
    })

for result in results:
    print(result["id"], result["passed"])

success_rate = (
    sum(result["passed"] for result in results)
    / len(results)
    * 100
)

print("Success rate:", success_rate, "%")

Trong ví dụ này, câu trả lời được kiểm tra dựa trên các cụm từ bắt buộc. Cách làm này minh bạch, dễ tái lập và không phát sinh chi phí gọi mô hình.

Tuy nhiên, kiểm tra từ khóa không đồng nghĩa với đánh giá đầy đủ ngữ nghĩa. Một câu trả lời có thể chứa từ khóa cần thiết nhưng vẫn sai về nội dung. Ngược lại, câu trả lời đúng có thể dùng cách diễn đạt khác và không vượt qua phép kiểm tra này.

6. Đánh giá kết quả bằng các chỉ số cơ bản

Sau khi chạy bộ test, cần tổng hợp kết quả thành những chỉ số có thể so sánh giữa các phiên bản agent.

6.1. Pass rate

Pass rate là tỷ lệ trường hợp kiểm thử đạt tiêu chí yêu cầu.

Công thức:

Pass rate = Số test đạt / Tổng số test × 100%

Ví dụ, nếu 45 trong 50 trường hợp đạt yêu cầu, pass rate bằng 90%.

6.2. Tool selection accuracy

Chỉ số này đo tỷ lệ trường hợp agent lựa chọn đúng công cụ theo tiêu chí của bài test. Cần định nghĩa trước công cụ nào được xem là đúng, bao gồm cả những trường hợp agent không nên gọi tool.

6.3. Task completion rate

Task completion rate đo tỷ lệ nhiệm vụ hoàn thành theo định nghĩa thành công của ứng dụng. Một nhiệm vụ chỉ được tính là thành công khi đáp ứng các điều kiện đã xác định, không chỉ vì agent tạo ra một câu trả lời.

6.4. Latency và chi phí

Đối với ứng dụng cần phản hồi nhanh, hãy theo dõi thời gian thực thi và các phân vị độ trễ. Nếu có dữ liệu usage từ nhà cung cấp, có thể ghi nhận lượng token và chi phí ước tính cho mỗi nhiệm vụ.

Không nên gộp mọi tiêu chí thành một điểm duy nhất ngay từ đầu. Hãy xem từng chỉ số để biết agent đang yếu ở khía cạnh nào.

7. Đánh giá hành vi gọi MCP tools

Với AI Agent sử dụng MCP, một test case có thể bao gồm không chỉ câu trả lời mong đợi mà còn cả hành vi gọi công cụ.

Ví dụ, một test case có thể lưu các trường:

  • input: yêu cầu người dùng.
  • expected_tool: công cụ cần được gọi.
  • expected_arguments: tham số mong đợi.
  • expected_outcome: kết quả nhiệm vụ cần đạt.
  • forbidden_actions: các hành động không được phép thực hiện.

Để đánh giá chính xác, ứng dụng cần ghi nhận tool call thực tế trong quá trình chạy. Bạn có thể dùng log hoặc trace để lấy tên công cụ, tham số đã được kiểm tra, trạng thái thực thi và kết quả trả về.

MCP Python SDK cung cấp các phương thức như list_tools() và call_tool() để ứng dụng khám phá và gọi công cụ. Tuy nhiên, SDK không tự xây dựng bộ tiêu chí đánh giá cho agent; phần evaluation cần được thiết kế trong ứng dụng hoặc công cụ đánh giá riêng.

Tài liệu chính thức: MCP Python SDK — Client.

8. Khi nào nên sử dụng LLM-as-a-judge?

Một số câu trả lời không thể đánh giá chỉ bằng cách so sánh chuỗi hoặc kiểm tra từ khóa. Ví dụ, khi cần đánh giá mức độ đầy đủ, tính mạch lạc, khả năng tuân thủ hướng dẫn hoặc chất lượng tóm tắt, có thể sử dụng một mô hình ngôn ngữ làm bộ chấm điểm.

Phương pháp này thường được gọi là LLM-as-a-judge.

Để sử dụng có trách nhiệm, hãy thiết kế rubric cụ thể thay vì chỉ yêu cầu mô hình đánh giá câu trả lời “tốt hay không tốt”. Ví dụ, có thể chấm theo thang điểm 1–5 dựa trên:

  • Tính chính xác của thông tin.
  • Mức độ bao phủ các ý bắt buộc.
  • Khả năng bám sát dữ liệu nguồn.
  • Mức độ tuân thủ yêu cầu người dùng.
  • Việc tránh đưa ra thông tin không có căn cứ.

Nên cung cấp ví dụ về câu trả lời tốt, trung bình và kém để kiểm tra tính nhất quán của rubric. Với những quyết định quan trọng, kết quả do mô hình chấm điểm tạo ra nên được đối chiếu với đánh giá của con người hoặc các kiểm tra xác định trước.

LLM-as-a-judge cũng có thể thiên lệch, chấm điểm không ổn định hoặc bị đánh lừa bởi cách trình bày. Vì vậy, không nên xem điểm số của một mô hình là sự thật tuyệt đối.

9. Phân biệt Output Evaluation và Trace Evaluation

Output evaluation tập trung vào câu trả lời cuối cùng. Trace evaluation xem xét toàn bộ quá trình thực thi, chẳng hạn các lượt gọi mô hình, lựa chọn công cụ, handoff và kết quả của từng bước.

Tiêu chí Output Evaluation Trace Evaluation
Đối tượng đánh giá Câu trả lời cuối cùng. Toàn bộ luồng thực thi.
Phát hiện câu trả lời sai Có. Có thể xác định thêm bước gây lỗi.
Kiểm tra lựa chọn tool Hạn chế nếu không có log bổ sung. Phù hợp khi trace ghi nhận tool calls.
Đánh giá tuân thủ workflow Không đầy đủ nếu chỉ có output. Có thể đánh giá theo các sự kiện trong trace.

Trong thực tế, nên kết hợp cả hai. Một câu trả lời cuối cùng đúng chưa chắc chứng minh mọi bước đều đúng; một workflow có vẻ hợp lý cũng chưa bảo đảm câu trả lời chính xác.

Để tìm hiểu thêm, tham khảo tài liệu chính thức về Evaluate agent workflows và Trace grading.

10. So sánh hai phiên bản AI Agent

Một mục tiêu quan trọng của evaluation là xác định liệu thay đổi prompt, model hoặc logic điều phối có thực sự cải thiện hệ thống hay không.

Giả sử phiên bản A và phiên bản B được kiểm tra trên cùng một bộ dữ liệu:

Chỉ số Agent A Agent B
Pass rate 82% 90%
Tool selection accuracy 88% 94%
Thời gian phản hồi trung vị 2,1 giây 2,6 giây

Các con số trên chỉ là ví dụ minh họa, không phải kết quả benchmark thực tế.

Trong tình huống này, Agent B có tỷ lệ đạt cao hơn nhưng thời gian phản hồi trung vị cũng tăng. Quyết định chọn phiên bản nào cần dựa trên yêu cầu của ứng dụng: chất lượng có quan trọng hơn tốc độ hay không, mức tăng độ trễ có chấp nhận được không và chi phí có nằm trong giới hạn không.

Để so sánh có ý nghĩa, hãy sử dụng cùng bộ test, giữ ổn định các điều kiện quan trọng và chạy đủ số lần phù hợp. Với mô hình có tính ngẫu nhiên, một lần chạy có thể chưa phản ánh đúng hiệu năng trung bình.

11. Những sai lầm thường gặp khi đánh giá AI Agent

Chỉ kiểm thử các trường hợp đơn giản

Bộ test quá dễ có thể tạo ra tỷ lệ thành công cao nhưng không phản ánh khả năng xử lý tình huống thực tế. Hãy bổ sung dữ liệu thiếu, câu hỏi mơ hồ, kết quả rỗng và yêu cầu không hợp lệ.

Dùng một tiêu chí cho mọi loại nhiệm vụ

Một agent phân loại dữ liệu và một agent tư vấn nội dung có thể cần những tiêu chí khác nhau. Rubric nên gắn với mục tiêu của ứng dụng.

Chỉ dựa vào LLM-as-a-judge

Điểm số do mô hình đánh giá có thể không ổn định. Nên kết hợp với kiểm tra chính xác, tiêu chí nghiệp vụ và đánh giá của con người khi cần.

Thay đổi bộ test liên tục nhưng không quản lý phiên bản

Nếu dữ liệu kiểm thử thay đổi sau mỗi lần chạy, việc so sánh hai phiên bản sẽ khó đáng tin cậy. Hãy lưu phiên bản dataset, tiêu chí chấm điểm và cấu hình chạy.

Bỏ qua chi phí và độ trễ

Agent có thể đạt điểm chất lượng cao nhưng gọi LLM hoặc tool quá nhiều lần. Cần đánh giá chất lượng cùng hiệu năng và chi phí để lựa chọn giải pháp phù hợp.

12. Quy trình xây dựng Evaluation Pipeline

Một quy trình evaluation có thể bắt đầu đơn giản rồi mở rộng dần theo mức độ trưởng thành của dự án:

  1. Xác định mục tiêu: quyết định thế nào là một nhiệm vụ thành công.
  2. Tạo dataset: tập hợp câu hỏi, dữ liệu tham chiếu và các tình huống biên.
  3. Chạy agent: lưu đầu ra, tool calls, trạng thái và thời gian thực thi.
  4. Chấm điểm: dùng quy tắc xác định trước, so sánh với kết quả tham chiếu hoặc rubric.
  5. Tổng hợp metrics: tính pass rate, tỷ lệ chọn tool đúng, độ trễ và các chỉ số liên quan.
  6. Phân tích lỗi: xác định các nhóm tình huống thất bại thường gặp.
  7. Điều chỉnh hệ thống: sửa prompt, tools, dữ liệu hoặc logic điều phối.
  8. Chạy lại bộ test: kiểm tra mức cải thiện và phát hiện hồi quy trước khi triển khai.

Khi dự án lớn hơn, có thể tích hợp evaluation vào quy trình CI/CD để chạy các bài test quan trọng mỗi khi prompt, mã nguồn hoặc cấu hình model thay đổi.

13. Kết luận

AI Agent Evaluation giúp chuyển việc đánh giá chất lượng từ cảm nhận chủ quan sang một quy trình có dữ liệu, tiêu chí và khả năng tái lập. Một bộ test tốt không chỉ kiểm tra câu trả lời cuối cùng mà còn đánh giá việc lựa chọn công cụ, tuân thủ quy trình, xử lý lỗi và hiệu năng của agent.

Với Python, bạn có thể bắt đầu bằng những kiểm tra đơn giản như từ khóa bắt buộc, điều kiện đầu ra và pass rate. Khi cần đánh giá nội dung phức tạp hơn, có thể bổ sung rubric, đánh giá của con người, LLM-as-a-judge hoặc trace evaluation.

Điều quan trọng nhất là xây dựng bộ test đại diện cho nhu cầu thực tế, quản lý phiên bản dữ liệu và chạy lại evaluation sau mỗi thay đổi đáng kể. Đây là nền tảng để cải thiện AI Agent một cách có hệ thống.

Nếu muốn phát triển thêm kỹ năng Python, AI và phân tích dữ liệu, bạn có thể tham khảo các chương trình tại MCNA Technology School:

Tài liệu tham khảo:

→ Chỉ mục