Mặc cho những lời tuyên bố mạnh mẽ rằng trí tuệ nhân tạo (AI) có thể sớm thay thế lập trình viên, nghiên cứu mới từ Microsoft Research cho thấy các công cụ lập trình AI hiện nay vẫn còn tụt hậu trong một nhiệm vụ cốt lõi: gỡ lỗi (debugging).
Microsoft: AI lập trình giỏi… nhưng vẫn lúng túng khi gặp lỗi
Các công cụ như GitHub Copilot hay ChatGPT Code Interpreter đang được đánh giá cao trong việc tăng năng suất lập trình, đặc biệt ở các tác vụ như gợi ý hàm, tự động hoàn thành đoạn mã hoặc sinh ra code mẫu từ mô tả ngôn ngữ tự nhiên. Tuy nhiên, khi đối mặt với lỗi – đặc biệt là lỗi phức tạp trong hệ thống lớn – AI lại thể hiện nhiều hạn chế.
Khác với việc viết một đoạn mã mới, gỡ lỗi đòi hỏi khả năng phân tích, truy vết, kiểm tra trạng thái chương trình theo thời gian thực, và đưa ra quyết định dựa trên chuỗi logic của hành vi chương trình – điều mà AI hiện tại vẫn chưa làm tốt.
Để kiểm chứng vấn đề này, Microsoft đã phát triển và giới thiệu debug-gym – một môi trường mô phỏng tương tác thực tế, nơi mô hình AI có thể truy cập vào công cụ debug giống như các kỹ sư phần mềm: đặt breakpoint, theo dõi biến, chạy từng dòng lệnh, phân tích stack trace…
Khi kiểm thử, các AI agent (dựa trên các mô hình ngôn ngữ lớn như GPT) được yêu cầu sửa lỗi trong một loạt mã nguồn thực tế. Kết quả: tỷ lệ thành công thường chỉ dưới 50%. Nhiều agent thậm chí không thực hiện bất kỳ hành vi tìm kiếm thông tin nào như con người – ví dụ như kiểm tra giá trị biến tại các điểm nghi ngờ hoặc theo dõi luồng điều kiện logic.
Vấn đề cốt lõi: AI thiếu dữ liệu huấn luyện về hành vi gỡ lỗi
Các nhà nghiên cứu tại Microsoft chỉ ra hai vấn đề chính dẫn đến hạn chế này:
- Thiếu dữ liệu huấn luyện phản ánh quy trình gỡ lỗi thực sự, chẳng hạn như các log tương tác debug, các bước phân tích mã theo dòng, hoặc hành vi quan sát logic tuần tự – thứ mà lập trình viên thực hiện hằng ngày.
- Mô hình AI hiện tại không đủ khả năng khai thác công cụ debug hiệu quả, vì chúng không được thiết kế để đưa ra chuỗi quyết định có điều kiện dựa trên thông tin thu thập được khi tương tác với runtime.
Một điểm đáng lưu ý là: các công cụ như GitHub Copilot hiện thường hoạt động theo cách sinh mã “tĩnh” từ mô tả, chứ không phải hành vi chủ động quan sát – phân tích – sửa mã như quy trình debug thực tế. Đây là khoảng cách lớn giữa khả năng hỗ trợ và khả năng thay thế hoàn toàn con người.
Hướng đi mới: đào tạo AI debug như lập trình viên thực thụ
Microsoft đề xuất các hướng phát triển cụ thể:
- Xây dựng bộ dữ liệu gỡ lỗi chuyên biệt, bao gồm các trace tương tác, lỗi phổ biến, log runtime và quá trình truy tìm nguyên nhân lỗi.
- Phát triển mô hình info-seeking agent – đóng vai trò như “bộ não phân tích” trước khi gọi mô hình sinh mã, giống như cách lập trình viên kiểm tra thông tin trước khi viết giải pháp.
Mô hình dạng này sẽ giúp AI biết cách đặt câu hỏi đúng: “Biến này có đang null không?”, “Dòng nào gây ra exception?”, “Logic điều kiện này đã đúng chưa?” – thay vì chỉ đoán hoặc sinh đoạn code thay thế.
Các chuyên gia cho rằng nếu hướng đi này được tiếp tục, tương lai có thể xuất hiện những AI lập trình viên phụ trách mảng QA/debug độc lập, hoặc thậm chí là các “AI reviewer” hỗ trợ kiểm tra lỗi trong pull request và CI/CD pipeline.
Dù AI lập trình đã đạt được nhiều thành tựu, khả năng gỡ lỗi vẫn là rào cản lớn nhất để thay thế kỹ sư phần mềm. Với hướng nghiên cứu mới từ debug-gym, Microsoft đang mở đường cho thế hệ AI tương lai có thể hiểu và xử lý mã nguồn giống như con người – một bước quan trọng trên hành trình “cong người hóa” năng lực lập trình của trí tuệ nhân tạo.