5 tiêu chí đánh giá
Accuracy: độ chính xác
Trả lời đúng và có căn cứ. Đo bằng điểm factuality và tỉ lệ hoàn thành việc.
Latency: độ trễ
Đo bằng p95/p99, và TTFT (thời gian đến token đầu tiên) khi có streaming.
Cost: chi phí
Đo bằng chi phí mỗi request, token mỗi việc, cache hit rate. Chỉ số hiệu quả quan trọng là chi phí cho mỗi việc hoàn thành.
Safety: an toàn
Tuân thủ chính sách. Đo bằng tỉ lệ vi phạm trên bộ test đối kháng và độ chính xác khi từ chối.
Security: bảo mật
Chịu được tấn công. Đo bằng tỉ lệ vượt qua các bài test prompt injection và rò rỉ dữ liệu.
Bộ dữ liệu eval
- Giống traffic thật: phải có cả câu lộn xộn, mơ hồ, nhiều ý. Không dùng bản đã làm sạch.
- Có ca biên: thêm ca khó và ca đối kháng theo tỉ lệ biết trước.
- Giữ riêng held-out: không chỉnh prompt dựa trên chính tập eval.
- Cập nhật liên tục: traffic thay đổi thì tập eval cũng phải đổi.
- Log thật hay dữ liệu tổng hợp? Log cho đúng phân bố, dữ liệu tổng hợp cho đủ ca biên. Thường dùng cả hai.
Bẫy đề thi
Con số tổng che giấu lỗi. Độ chính xác 94% vẫn có thể đi kèm lỗi nặng ở một nhóm người dùng. Hãy chấm riêng theo từng nhóm (stratified scoring).
Cách chấm điểm
-
Code-based
- Chấm gì
- Schema, trường bắt buộc, khớp chính xác, độ trễ, PII, số thẻ.
- Quy mô
- Mọi thứ viết được thành luật thì chấm bằng code, trên 100% câu trả lời.
-
LLM-as-judge
- Chấm gì
- Giọng văn, độ hữu ích, chiều sâu suy luận.
- Quy mô
- Chấm trên một mẫu, theo rubric viết rõ.
- Model
- Dùng model mạnh, thường cao hơn model đang test.
-
Human review
- Chấm gì
- Hiệu chỉnh judge, không chấm tất cả.
- Quy mô
- Nhóm nhỏ, khoảng 50 mẫu mỗi chu kỳ.
Nếu judge luôn chấm cao hơn người, rubric đang bị lệch. Để phát hiện lỗi mới trong các kết quả model rất tự tin, hãy lấy mẫu ngẫu nhiên theo từng nhóm tài liệu.
Các loại test
Smoke test
Sau mỗi lần deploy, kiểm tra nhanh các luồng chính còn chạy không.
Regression test
So với một bộ tham chiếu ổn định gồm các kết quả đã biết là đúng. Dùng khi sửa prompt, template hoặc đổi model.
Integration test
Kiểm tra hành vi đầu cuối qua nhiều thành phần của pipeline.
Adversarial test
Dùng prompt injection và input dị dạng để kiểm tra độ an toàn khi bị tấn công.
Unit test
Kiểm tra một phần logic nhỏ, như việc render template. Không đủ để kiểm tra chất lượng cả hệ thống.
Nâng phiên bản model
Rủi ro lớn là chất lượng an toàn giảm dần mà không ai biết. Hãy giữ một bộ test đối kháng cố định và ghi điểm theo từng phiên bản, để mỗi lần nâng cấp đều được đo trên cùng một bộ trước khi đưa lên production.
Đã đối chiếu tài liệu chính thức
Docs khuyên test phải sát phân bố công việc thật và có ca biên, tự động chấm khi có thể, và ưu tiên nhiều câu chấm tự động hơn ít câu chấm tay. Với LLM-based grading, nên dùng model khác với model tạo ra kết quả. Xem docs
A/B test đúng cách
- Mỗi lần chỉ đổi một biến: model, phiên bản prompt, hoặc độ sâu retrieval.
- Xác định chỉ số và cỡ mẫu trước khi chạy.
- Chia traffic thật để các phiên bản chạy song song trên cùng loại dữ liệu.
- Quyết định dựa trên kết quả có ý nghĩa thống kê, không dựa trên cảm nhận.
Khi sửa system prompt, hãy chạy regression suite trong CI/CD trước. Qua được rồi mới đưa vào A/B test.
Tìm nguyên nhân gốc
Tài liệu đúng, câu trả lời sai hoặc không có căn cứ
- Nguyên nhân
- Hallucination, grounding yếu.
- Cách sửa
- Siết chỉ dẫn grounding, bắt buộc trích dẫn.
Tài liệu không liên quan hoặc bị thiếu
- Nguyên nhân
- Retrieval hỏng.
- Cách sửa
- Sửa chunking, embedding, thêm re-ranking.
Chỉ sai ở câu suy luận nhiều bước
- Nguyên nhân
- Model không đủ mạnh.
- Cách sửa
- Thử model mạnh hơn cho nhóm câu này.
Sai đều ở mọi loại input
- Nguyên nhân
- Prompt có vấn đề.
- Cách sửa
- Viết lại prompt với tiêu chí kiểm tra được.
Độ chính xác giảm ngay sau khi refresh index
- Nguyên nhân
- Lỗi ở pipeline retrieval hoặc indexing.
- Cách sửa
- Kiểm tra pipeline trước, chưa cần đổi model.
Hai đáp án cần đọc kỹ
Với tình huống “refusal tăng 30%, code không đổi”, nguồn ôn tập có hai đáp án khác nhau: Domain 2 nói nghi alias model, Domain 4 nói nghi traffic thay đổi. Hãy dựa vào chi tiết trong đề:
- Đề nhắc đến alias: kiểm tra alias trước.
- Model đã pin phiên bản: kiểm tra traffic drift trước.
- Docs nêu thêm: với model ID đã pin, hạ tầng phục vụ như router và safety classifier vẫn có thể đổi. Docs coi đây là nguyên nhân khả dĩ nhất khi hành vi khác đi, dù thường chỉ là khác biệt nhỏ. Xem docs
Câu trả lời mâu thuẫn với tài liệu đã lấy
Nếu retrieval không đổi mà model bắt đầu trả lời trái với nguồn, hãy làm hai việc: kiểm tra chỉ dẫn grounding trong system prompt còn nguyên không, và chạy lại trên phiên bản model trước để xem có phải do model. Đổi embedding, giảm temperature hay tăng context không giúp tìm ra nguyên nhân.
Mẹo xử lý thêm
- Tự kiểm tra khi trích xuất: lấy cả
calculated_totalvàstated_totalđể so khớp hai số. - Mất niềm tin vì nhiều cảnh báo sai: tạm tắt các nhóm cảnh báo sai nhiều trong lúc cải thiện prompt.
- Trước khi chạy cả kho lớn: chỉnh prompt trên một mẫu đại diện trước.
Các cách tối ưu
Cắt token
Rút gọn lịch sử và tool output. Giảm chi phí và độ trễ.
Prompt caching
Cache phần đầu ổn định. Giảm chi phí và độ trễ.
Streaming
Trả token ngay khi có. Chỉ giảm độ trễ cảm nhận được.
Định tuyến theo tier
Việc đơn giản dùng model nhanh nhất đủ tốt. Giảm chi phí và độ trễ.
Dành model mạnh cho việc khó
Chỉ nhóm câu cần suy luận mới dùng model mạnh. Tăng chất lượng.
Xử lý bất đồng bộ
Chuyển việc không gấp khỏi luồng tương tác. Giảm chi phí.
Ghép lại thành kiến trúc định tuyến: yêu cầu tương tác dùng tier nhanh, streaming và prefix đã cache. Việc nặng suy luận dùng tier mạnh. Việc số lượng lớn, không gấp dùng Batch API.
Message Batches API
- Giá: giảm 50% so với giá thường.
- Ghép kết quả: dùng
custom_idđể biết kết quả nào thuộc request nào. - Thời gian: tối đa 24 giờ, đa số xong trong 1 giờ.
- Giới hạn: vẫn gửi được tool và lịch sử nhiều lượt, nhưng code của bạn không gửi được kết quả tool giữa chừng một request.
- Hợp với: việc không gấp, khối lượng lớn, một lượt, như phân tích cảm xúc của một triệu đánh giá.
Công thức thời gian
Tổng thời gian = thời gian chờ đến lô kế tiếp + 24 giờ. Nếu cam kết trả trong 30 giờ thì thời gian chờ tối đa là 6 giờ, nên phải gửi lô ít nhất 6 giờ một lần.
Có request lỗi trong lô? Dùng custom_id để tìm đúng các request đó, sửa (ví dụ chia nhỏ tài liệu quá dài) rồi chỉ gửi lại chúng.
Đã đối chiếu tài liệu chính thức
Mỗi lô tối đa 100.000 request hoặc 256 MB. Lô chưa xong sau 24 giờ thì hết hạn, và request hết hạn không bị tính phí. Kết quả được giữ 29 ngày. Xem docs
Khi nào cần người
- Bộ chấm safety hoặc security gắn cờ, hoặc một nhóm vượt ngưỡng vi phạm.
- Grounding yếu: không truy được nội dung về tài liệu đã lấy.
- Yêu cầu thuộc nhóm có quy định hoặc hậu quả lớn.
- Điểm của judge và của người lệch nhau quá mức cho phép.
Lấy mẫu khi không thể duyệt hết
Dùng risk-stratified sampling: duyệt toàn bộ kết quả có độ tin cậy thấp hoặc tác động lớn, và một mẫu ngẫu nhiên nhỏ của phần còn lại. Lấy mẫu đều mọi kết quả sẽ tốn công vào các ca rủi ro thấp.
Thiết kế quy trình người duyệt
Lưu quyết định của người duyệt thành dữ liệu có nhãn và đưa dần vào tập eval. Người duyệt phải được phép không đồng ý với model, nếu không dữ liệu đó sẽ vô giá trị.
Bẫy đề thi
Độ tự tin do model tự báo không phải cổng kiểm soát đáng tin. Hãy dùng các tín hiệu từ code.
Discernment: đánh giá kết quả AI
Discernment là một trong 4 năng lực của khung AI Fluency (Delegation, Description, Discernment, Diligence), nghĩa là đánh giá chính xác mức độ hữu ích của kết quả và hành vi của AI.
- Tỉ lệ chấp nhận không phải là độ đúng: người dùng bấm chấp nhận chưa chứng minh kết quả đúng sau khi được kiểm tra.
- Khoảng trống phạm vi: nếu người dùng thường phải dùng các tiêu chí mà AI không xét đến, thì đầu vào của hệ thống đang thiếu.
- Ba góc nhìn: kết quả (product), cách suy luận (process), và cách AI hành xử khi tương tác (performance).
Bẫy đề thi
Đừng duyệt ra mắt chỉ vì một chỉ số đẹp. Hãy hỏi chỉ số đó có thực sự đo đúng chất lượng cần đo không.
Nhớ nhanh
- Viết được thành luật thì chấm bằng code. Giọng văn thì dùng judge. Người chỉ để hiệu chỉnh.
- Mỗi thí nghiệm chỉ đổi một biến.
- Chấm theo từng nhóm, đừng tin con số tổng.
- Dạng lỗi chỉ ra nguyên nhân: chỉ sai câu khó là do model, sai đều là do prompt.
- Batch: giảm 50%, tối đa 24 giờ, ghép bằng
custom_id.