Bỏ qua đến nội dung chính

Code based grading

📖 Nội dung bài học

Video này đang được xử lý. Vui lòng quay lại sau và tải lại trang.

Tóm tắt

Khi đánh giá các mô hình AI tạo mã nguồn (code), bạn cần nhiều hơn là chỉ kiểm tra xem câu trả lời có hợp lý hay không. Bạn cũng cần xác minh xem mã nguồn được tạo ra có thực sự đúng cú pháp (syntax) và tuân thủ định dạng chính xác hay không. Đây là lúc cần đến đánh giá dựa trên mã nguồn (code-based grading).

Cách thức hoạt động của Code Grading

Code grading xác thực hai khía cạnh chính của các phản hồi do AI tạo ra:

  • Định dạng (Format) - Phản hồi chỉ nên trả về loại mã nguồn được yêu cầu (Python, JSON, hoặc Regex) mà không kèm theo giải thích.
  • Cú pháp hợp lệ (Valid Syntax) - Mã nguồn được tạo ra phải thực sự có thể phân tích (parse) chính xác theo ngôn ngữ dự kiến.
  • Tuân thủ yêu cầu (Task Following) - Phản hồi phải giải quyết trực tiếp những gì được hỏi và đảm bảo tính chính xác.

Hai tiêu chí đầu tiên được xử lý bởi bộ đánh giá mã nguồn (code grader), trong khi việc tuân thủ yêu cầu được đánh giá bởi bộ đánh giá bằng mô hình (model grader). Kết hợp lại, chúng cung cấp một kết quả eval toàn diện.

Các hàm xác thực cú pháp (Syntax Validation Functions)

Để kiểm tra xem mã nguồn được tạo ra có cú pháp hợp lệ hay không, bạn có thể tạo ba hàm bổ trợ để thử parse kết quả đầu ra:

def validate_json(text):
    try:
        json.loads(text.strip())
        return 10
    except json.JSONDecodeError:
        return 0

def validate_python(text):
    try:
        ast.parse(text.strip())
        return 10
    except SyntaxError:
        return 0

def validate_regex(text):
    try:
        re.compile(text.strip())
        return 10
    except re.error:
        return 0

Mỗi hàm cố gắng parse văn bản theo định dạng tương ứng. Nếu parse thành công, hàm trả về điểm tối đa là 10. Nếu thất bại với một lỗi, cú pháp đó không hợp lệ và trả về 0.

Yêu cầu định dạng tập dữ liệu (Dataset)

Để code grader biết nên sử dụng bộ xác thực nào, các trường hợp kiểm thử (test cases) của bạn cần chỉ định định dạng đầu ra mong đợi:

{
    "task": "Create a Python function to validate an AWS IAM username",
    "format": "python"
}

Bạn có thể cập nhật prompt tạo dataset để tự động bao gồm trường định dạng này bằng cách thêm nó vào cấu trúc đầu ra ví dụ.

Cải thiện độ rõ ràng của Prompt

Để nhận được kết quả tốt hơn từ mô hình AI, hãy làm cho các hướng dẫn trong prompt của bạn cụ thể hơn về định dạng đầu ra mong đợi:

* Respond only with Python, JSON, or a plain Regex
* Do not add any comments or commentary or explanation

Bạn cũng có thể sử dụng tin nhắn phản hồi được điền sẵn (pre-filled assistant message) với các khối mã để khuyến khích mô hình chỉ trả về mã nguồn thô:

add_assistant_message(messages, "```code")

Cách này yêu cầu Claude bắt đầu tạo nội dung mã nguồn mà không cần phải chỉ định trước đó là Python, JSON hay Regex.

Kết hợp điểm số

Bước cuối cùng là hợp nhất điểm từ model grader với điểm từ code grader. Một cách tiếp cận đơn giản là lấy giá trị trung bình:

model_grade = grade_by_model(test_case, output)
model_score = model_grade["score"]
syntax_score = grade_syntax(output, test_case)

score = (model_score + syntax_score) / 2

Cách này tạo trọng số ngang nhau cho cả chất lượng nội dung và tính chính xác về kỹ thuật. Bạn có thể điều chỉnh các trọng số này tùy thuộc vào điều gì quan trọng hơn đối với trường hợp sử dụng cụ thể của mình.

Kiểm thử triển khai của bạn

Sau khi đã triển khai code grading, hãy chạy eval để lấy điểm cơ sở (baseline score). Bản thân con số này không hẳn là tốt hay xấu - điều quan trọng là liệu bạn có thể cải thiện nó bằng cách tinh chỉnh prompt hay không. Điều này cung cấp cho bạn một cách định lượng để đo lường tiến độ prompt engineering thay vì dựa vào đánh giá chủ quan.

Tải xuống

🔁 Bài học liên quan

📚 Nguồn & ghi nhận

Bài học có hữu ích không?

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?