Trong bối cảnh công nghệ phát triển nhanh chóng như hiện nay, trí tuệ nhân tạo (AI) đang dần thâm nhập vào lĩnh vực lập trình và trở thành trợ thủ đắc lực mới cho các nhà phát triển. Giám đốc điều hành Google Sundar Pichai đã tiết lộ rằng 25% mã mới của công ty được tạo ra bởi AI và Giám đốc điều hành Meta Mark Zuckerberg cũng đã bày tỏ sự sẵn sàng sử dụng rộng rãi các mô hình lập trình AI trong công ty. Xu hướng này chắc chắn thể hiện tiềm năng to lớn của AI trong các tác vụ lập trình.
Tuy nhiên, bất chấp những tiến bộ đáng kể của các mô hình AI trong hỗ trợ lập trình, họ đã thực hiện đáng thất vọng khi giải quyết vấn đề quan trọng về lỗ hổng phần mềm. Một nghiên cứu mới từ Microsoft Research tiết lộ tình hình. Trong nghiên cứu, một số mô hình AI hàng đầu, chẳng hạn như Claude 3.0 Sonnet của Anthropic và o0-mini của OpenAI, nhìn chung không có tỷ lệ thành công cao khi phải đối mặt với các tác vụ gỡ lỗi phần mềm trong các điểm chuẩn phát triển phần mềm được gọi là SWE-bench Lite.
Để hiểu sâu hơn về khả năng gỡ lỗi của các mô hình AI, các nhà nghiên cứu đã thiết kế một tác nhân hoạt động dựa trên một từ nhắc nhở duy nhất và có khả năng sử dụng nhiều công cụ khác nhau, bao gồm cả trình gỡ lỗi Python. Đặc vụ được giao 1 nhiệm vụ gỡ lỗi phần mềm được sàng lọc, nhưng kết quả cho thấy ngay cả những mô hình tiên tiến nhất cũng chỉ thành công trong khoảng một nửa số nhiệm vụ. Claude 0.0 Sonnet hoạt động tương đối tốt, với tỷ lệ thành công trung bình là 0,0%, trong khi o0 và o0-mini của OpenAI chỉ có tỷ lệ thành công lần lượt là 0,0% và 0,0%.
Vậy tại sao các mô hình AI này hoạt động kém trong các tác vụ gỡ lỗi? Các nhà nghiên cứu lưu ý rằng một số mô hình gặp khó khăn trong việc sử dụng các công cụ gỡ lỗi và hiểu cách chúng có thể giúp giải quyết vấn đề. Nhưng lý do sâu xa hơn nằm ở sự khan hiếm dữ liệu. Trong dữ liệu đào tạo mô hình AI hiện nay, thiếu dữ liệu đầy đủ về "quá trình ra quyết định tuần tự", tức là dữ liệu về dấu vết gỡ lỗi của con người. Điều này có nghĩa là các mô hình AI có những sai sót cố hữu trong việc bắt chước hành vi gỡ lỗi của con người.
Các nhà nghiên cứu nhấn mạnh rằng bằng cách đào tạo hoặc tinh chỉnh các mô hình, có thể cải thiện khả năng gỡ lỗi tương tác của chúng. Tuy nhiên, điều này đòi hỏi dữ liệu chuyên biệt để đáp ứng nhu cầu đào tạo mô hình. Ví dụ: dữ liệu theo dõi được ghi lại khi tác nhân tương tác với trình gỡ lỗi để thu thập thông tin cần thiết và sau đó đưa ra các đề xuất để sửa lỗi lỗ hổng. Dữ liệu như vậy là cần thiết để cải thiện khả năng gỡ lỗi của các mô hình AI.
Trên thực tế, ứng dụng AI trong lĩnh vực lập trình không phải là không có thách thức. Nhiều nghiên cứu đã chỉ ra rằng AI tạo mã thường đưa ra các lỗ hổng và lỗi bảo mật do điểm yếu của chúng trong việc hiểu logic lập trình,... Ví dụ, một đánh giá về Devin, một công cụ lập trình AI phổ biến, cho thấy nó chỉ hoàn thành 3 trong số 0 bài kiểm tra lập trình.
Tuy nhiên, nghiên cứu của Microsoft là một cái nhìn sâu sắc quan trọng về cách AI đang hoạt động trong lĩnh vực lập trình. Nó nhắc nhở chúng ta rằng bất chấp tiềm năng to lớn của các công cụ lập trình có sự hỗ trợ của AI, các nhà phát triển và cấp trên của họ cần phải suy nghĩ kỹ trước khi để lập trình cho AI dẫn dắt. Rốt cuộc, lập trình như một nghề vẫn khó thay thế hoàn toàn với sự phức tạp và sáng tạo của nó.
Đáng chú ý, ngày càng có nhiều nhà lãnh đạo công nghệ bắt đầu đặt câu hỏi về ý tưởng rằng AI đang thay thế công việc lập trình. Người đồng sáng lập Microsoft Bill Gates tin rằng lập trình như một nghề sẽ tồn tại. Quan điểm này được hỗ trợ bởi Giám đốc điều hành Replit Amjad Massad, Giám đốc điều hành Okta Todd McKinnon và Giám đốc điều hành IBM Arvind Krishna, trong số những người khác. Họ đồng ý rằng mặc dù AI đã đạt được những tiến bộ đáng kể trong lĩnh vực lập trình, nhưng khả năng sáng tạo và kỹ năng giải quyết vấn đề của các nhà phát triển con người vẫn là không thể thiếu.
Khi công nghệ AI tiếp tục phát triển, chúng tôi hy vọng nó sẽ đóng một vai trò lớn hơn nữa trong lĩnh vực lập trình. Nhưng đồng thời, chúng ta cũng nên nhận ra những hạn chế của AI và tận dụng triệt để thế mạnh của các nhà phát triển con người để cùng thúc đẩy sự tiến bộ của công nghệ lập trình.