AI đang thay đổi cách phát triển phần mềm như thế nào?
AI Coding Assistant: Trợ lý mã hóa AI
Các mô hình ngôn ngữ lớn (LLMs) đang thay đổi cách chúng ta viết mã. Không chỉ đơn thuần là công cụ tự động hoàn thành mã, LLM giờ đây đã phát triển thành trợ lý AI có khả năng thiết kế, thực thi và sửa lỗi các mô-đun mã, giúp các kỹ sư phần mềm hiệu quả hơn.
Có ba cách chính mà LLM đang thay đổi trải nghiệm lập trình:
- Trợ lý mã hóa trực tiếp: Các chatbot như ChatGPT, Claude, và các giao diện chatbot khác được sử dụng như trợ lý mã hóa. Chúng ngày càng giỏi trong việc tạo mã từ mô tả bằng văn bản, cải thiện đoạn mã được cung cấp, hoặc hỗ trợ gỡ lỗi. Các nhà cung cấp mô hình đang thêm các tính năng mới vào giao diện chatbot để nâng cao trải nghiệm người dùng, chẳng hạn như tính năng Artifacts của Claude cho phép người dùng xem và chạy mã khi tương tác với mô hình.
- Plugins trong IDE: LLM được tích hợp vào các môi trường phát triển tích hợp (IDE) như plugin. Các công cụ này sử dụng các file dự án và cơ sở mã làm ngữ cảnh để cung cấp phản hồi chính xác hơn và thực hiện các nhiệm vụ phức tạp hơn.
- Ví dụ: Microsoft là công ty đầu tiên bước vào lĩnh vực này với GitHub Copilot, được ra mắt một năm trước ChatGPT. Ban đầu, Copilot là công cụ viết các đoạn mã ngắn trong trình chỉnh sửa mã, nhưng giờ đây đã phát triển thành trợ lý đầy đủ, hỗ trợ người dùng trong nhiều nhiệm vụ phát triển. Amazon cũng cung cấp trợ lý mã hóa Q với các tính năng tương tự bên trong môi trường mã hóa, bao gồm tự động hoàn thành mã, các tác nhân thiết kế và di chuyển mã giữa các ngôn ngữ lập trình khác nhau. Một số công ty khởi nghiệp khác cũng đã tham gia vào thị trường này, bao gồm Tabnine, Replit và Codeium.
AI Software Engineering Agents: Các tác nhân AI trong kỹ thuật phần mềm
Cách thứ ba mà LLM đang thay đổi phát triển phần mềm là thông qua các khung agentic. Nói một cách đơn giản, các tác nhân AI là nhiều LLM được cung cấp các lời nhắc hệ thống khác nhau và được hướng dẫn làm việc cùng nhau để hoàn thành một dự án. Ví dụ, một tác nhân có thể là nhà thiết kế, cung cấp kế hoạch cấp cao để hoàn thành một nhiệm vụ, chẳng hạn như tìm kiếm tài nguyên, tạo mô-đun và sau đó chạy chúng trên nền tảng đám mây. Một tác nhân khác có thể cung cấp phân tích chi tiết hơn về từng bước. Một tác nhân thứ ba được giao nhiệm vụ viết mã cho một nhiệm vụ cụ thể và gửi nó cho một tác nhân khác để kiểm tra chất lượng và gửi lại để sửa chữa. Cuối cùng, một tác nhân khác có thể kết hợp tất cả các phần lại với nhau, biên dịch, kiểm tra và phê duyệt để phát hành.
Theo lý thuyết, các tác nhân kỹ thuật phần mềm có thể nhận mô tả về một dự án và hoàn thành nó từ đầu đến cuối. Ví dụ, vào tháng 3, công ty khởi nghiệp AI Cognition đã công bố Devin, được quảng cáo là kỹ sư phần mềm AI đầu tiên. Devin sử dụng các tác nhân LLM và nhiều công cụ như trình duyệt, IDE và trình biên dịch để thu thập tài nguyên, lập luận về nhiệm vụ, viết mã và đánh giá kết quả. Người dùng có thể theo dõi quá trình lập luận và theo dõi Devin tiến hành công việc. Nhiều bản demo được đăng tải bởi Cognition AI cho thấy Devin hoàn thành các nhiệm vụ khác nhau, bao gồm một công việc trên UpWork cho một dự án thị giác máy tính. Điều này đã tạo ra ấn tượng rằng các tác nhân AI có thể sớm thay thế các kỹ sư phần mềm.
Devin chưa phải là mã nguồn mở và vẫn chưa được công khai. Tuy nhiên, nó đã truyền cảm hứng cho các dự án khác, chẳng hạn như OpenDevin, một tác nhân kỹ thuật phần mềm mã nguồn mở với khả năng tương tự. Và các tác nhân phát triển phần mềm khác như GPT-engineer đã tồn tại trong vài tháng với các bản demo ấn tượng.
Thực tế hay cường điệu?
Nhiều nghiên cứu cho thấy các trợ lý AI như GitHub Copilot giúp tăng năng suất của các nhà phát triển và giúp họ tập trung vào công việc của mình thay vì tìm kiếm các giải pháp trên web. ChatGPT và Claude cũng đã trở thành công cụ thường xuyên cho các nhà phát triển để phác thảo ý tưởng thiết kế phần mềm, chuẩn bị phiên bản mã ban đầu và học các kỹ năng lập trình mới.
Tuy nhiên, một số sự phấn khích và cường điệu xung quanh các trợ lý phát triển phần mềm AI là không cần thiết và đã thu hút sự chú ý của các kỹ sư dày dặn kinh nghiệm. Ví dụ, nhiều video cho thấy các bản demo có sẵn của Devin không phải là những gì họ đã được quảng cáo, và các tác nhân AI còn lâu mới có thể thực hiện đầy đủ các nhiệm vụ của một kỹ sư phần mềm cấp trung hoặc cao cấp.
Ngoài ra, cũng có những lo ngại rằng các công cụ như Copilot có thể tạo ra mã không an toàn, có thể đã xuất hiện trong dữ liệu đào tạo của chúng hoặc cơ sở mã của người dùng. Các nhà cung cấp công cụ đang nỗ lực liên tục để thêm các biện pháp bảo vệ nhằm ngăn chặn các mô hình tạo ra mã không an toàn. Cũng có nguy cơ mù tự động hóa, nơi các nhà phát triển quá quen với việc chấp nhận mã do AI tạo ra mà không xem xét lại. Điều này có thể dẫn đến mã không thể đoán trước, sau đó mất thêm thời gian để gỡ lỗi.
Điều chắc chắn là AI chưa thể thay thế các nhà phát triển phần mềm. Tuy nhiên, chúng ta vẫn đang ở giai đoạn đầu của trợ lý mã hóa AI, và không thể phủ nhận rằng việc sử dụng LLM trong phát triển phần mềm có nhiều giá trị. Khi AI thâm nhập vào nhiều lĩnh vực hơn, nhu cầu về các nhà phát triển phần mềm cũng đang tăng lên. Khi các công cụ và mô hình trưởng thành, chúng ta có thể mong đợi năng suất cao hơn trong kỹ thuật phần mềm.

0 comments Blogger 0 Facebook
Đăng nhận xét