LLM gặp rào cản trong phát triển phần mềm khi những hạn chế về mô hình tư duy trở nên rõ ràng

Nhóm Cộng đồng BigGo
LLM gặp rào cản trong phát triển phần mềm khi những hạn chế về mô hình tư duy trở nên rõ ràng

Giai đoạn trăng mật với các công cụ lập trình hỗ trợ bởi AI có thể sắp kết thúc. Trong khi các Mô hình Ngôn ngữ Lớn ( LLMs ) đã gây ấn tượng với các nhà phát triển bằng khả năng tạo code nhanh chóng, ngày càng nhiều kỹ sư có kinh nghiệm đang chỉ ra những hạn chế cơ bản ngăn cản các công cụ này thực sự xây dựng phần mềm một cách độc lập.

Cuộc thảo luận tập trung xung quanh một hiểu biết quan trọng từ thực tiễn kỹ thuật phần mềm: lập trình hiệu quả không chỉ là viết code, mà còn là duy trì các mô hình tư duy rõ ràng về những gì code nên làm so với những gì nó thực sự làm. Quá trình lặp đi lặp lại này của việc xây dựng, kiểm thử và tinh chỉnh dựa trên các mô hình tư duy dường như là nơi AI hiện tại còn thiếu sót.

Vấn đề Mô hình Tư duy

Vấn đề cốt lõi không phải là LLM không thể viết code - thực tế chúng khá giỏi trong việc này. Vấn đề nằm ở khả năng duy trì sự hiểu biết nhất quán về các dự án phức tạp theo thời gian. Khi các bài kiểm thử thất bại hoặc lỗi xuất hiện, những hệ thống AI này thường phải dựa vào phỏng đoán thay vì gỡ lỗi có hệ thống. Chúng gặp khó khăn với việc bỏ sót ngữ cảnh, chịu ảnh hưởng của thiên lệch gần đây khi thông tin gần đây lấn át ngữ cảnh trước đó, và thường xuyên tạo ra những chi tiết ảo tưởng không tồn tại.

Điều này tạo ra một chu kỳ bực bội cho các nhà phát triển. AI có thể viết code ấn tượng ban đầu, nhưng khi độ phức tạp tăng lên, nó bắt đầu mất dấu kiến trúc hệ thống tổng thể. Khi vấn đề phát sinh, nó có xu hướng xóa mọi thứ và bắt đầu lại thay vì xác định và sửa chữa nguyên nhân gốc rễ một cách có phương pháp.

Những Hạn Chế Chính Của LLM Trong Phát Triển Phần Mềm:

  • Thiếu Sót Ngữ Cảnh: Kém trong việc tìm ra ngữ cảnh bị thiếu trong các dự án phức tạp
  • Thiên Vị Thông Tin Gần Đây: Quá chú trọng vào thông tin gần đây trong khi quên đi ngữ cảnh trước đó
  • Ảo Giác: Thường xuyên bịa ra các chi tiết không tồn tại trong codebase
  • Duy Trì Mô Hình Tư Duy: Không thể duy trì sự hiểu biết nhất quán qua các lần lặp
  • Phương Pháp Debug: Có xu hướng đoán giải pháp thay vì xác định nguyên nhân gốc một cách có hệ thống

Khả năng và Hạn chế Hiện tại

Bất chấp những hạn chế này, LLM đã tìm thấy điểm mạnh của mình trong phát triển phần mềm. Chúng xuất sắc trong việc tạo ra boilerplate code, viết tài liệu và xử lý các tác vụ lập trình thường xuyên đã được thực hiện vô số lần trước đây. Nhiều nhà phát triển báo cáo những cải thiện năng suất đáng kể khi sử dụng AI cho những tác vụ cấp độ vi mô này.

Tuy nhiên, công nghệ này dường như đã đạt đến ngưỡng trong những tháng gần đây. Trong khi những cải tiến từ GPT-2 đến GPT-3 rất ấn tượng, thì những tiến bộ từ GPT-3 đến GPT-4 và xa hơn nữa chỉ mang tính gia tăng. Phần lớn tiến bộ gần đây đến từ việc cải thiện curation dataset và trải nghiệm người dùng thay vì những đột phá cơ bản trong khả năng lý luận.

Điểm mạnh và điểm yếu của LLM:

LLM làm tốt những gì LLM gặp khó khăn với những gì
Tạo ra mã boilerplate Duy trì ngữ cảnh toàn dự án
Viết tài liệu Debug các vấn đề phức tạp một cách có hệ thống
Xử lý các tác vụ lập trình thường xuyên Xây dựng và duy trì các mô hình tinh thần
Tổng hợp các yêu cầu Lặp lại trên các vấn đề phức tạp
Tạo mã từ các đặc tả rõ ràng Quyết định có nên sửa mã hay sửa test

Cuộc tranh luận về Mở rộng quy mô

Cộng đồng công nghệ vẫn còn chia rẽ về việc liệu những hạn chế hiện tại có thể được khắc phục thông qua việc mở rộng quy mô hay không. Một số cho rằng LLM sẽ tiếp tục cải thiện giống như internet thời kỳ đầu, điện thoại di động và xe điện - những công nghệ ban đầu tệ nhưng tiếp tục trở nên tốt hơn thông qua việc lặp đi lặp lại.

Những chiếc xe đầu tiên hỏng hóc liên tục. Chúng có phạm vi hoạt động hạn chế. Không có nguồn cung cấp phụ tùng dồi dào cho chúng. Không có mạng lưới trạm nhiên liệu rộng lớn để cung cấp năng lượng cho chúng. Ngựa là một phương pháp đã được chứng minh.

Tuy nhiên, những người chỉ trích chỉ ra rằng LLM đối mặt với những thách thức khác biệt so với những ví dụ lịch sử này. Không giống như xe hơi hay điện thoại, vốn có những vấn đề kỹ thuật có thể được giải quyết bằng thời gian và tài nguyên, LLM có thể có những hạn chế kiến trúc cơ bản. Thiết kế cốt lõi của chúng - dự đoán văn bản tiếp theo có khả năng nhất dựa trên xác suất - có thể vốn dĩ không phù hợp cho loại lý luận cần thiết trong phát triển phần mềm phức tạp.

Vòng lặp Kỹ thuật Phần mềm (Con người vs LLM):

Kỹ sư Con người:

  1. Xây dựng mô hình tư duy về các yêu cầu
  2. Viết code để triển khai các yêu cầu
  3. Xây dựng mô hình tư duy về những gì code thực sự làm
  4. Xác định sự khác biệt và cập nhật code/yêu cầu một cách có hệ thống

Hành vi của LLM:

  1. Tạo ra code dựa trên prompt
  2. Giả định rằng code được tạo ra hoạt động chính xác
  3. Khi các bài test thất bại, đoán mò các giải pháp
  4. Khi bực bội, xóa mọi thứ và bắt đầu lại

Các Phương pháp Thực tế Tiến về phía trước

Thay vì chờ đợi những cải tiến đột phá, nhiều nhà phát triển đang điều chỉnh quy trình làm việc của họ để hoạt động trong những hạn chế hiện tại của AI. Điều này bao gồm chia nhỏ các vấn đề phức tạp thành những phần nhỏ hơn, duy trì tài liệu rõ ràng giúp AI hiểu ngữ cảnh dự án, và sử dụng các quy trình phát triển có cấu trúc hướng dẫn AI thông qua các thực tiễn kỹ thuật phần mềm phù hợp.

Một số nhóm đang thử nghiệm với các hệ thống agent phân cấp, nơi các instance AI khác nhau xử lý các khía cạnh khác nhau của phát triển trong khi con người duy trì mô hình tư duy tổng thể. Những nhóm khác tập trung vào việc sử dụng AI cho các tác vụ cụ thể, được định nghĩa rõ ràng trong khi giữ con người kiểm soát các quyết định về kiến trúc và thiết kế.

Sự đồng thuận nổi lên từ cộng đồng nhà phát triển cho thấy rằng trong khi LLM là những công cụ có giá trị để tăng tốc các khía cạnh nhất định của phát triển phần mềm, chúng chưa sẵn sàng thay thế các kỹ sư con người. Công nghệ hoạt động tốt nhất khi được đối xử như một dạng autocomplete tiên tiến thay vì một nhà phát triển tự động. Thành công đến từ việc hiểu những hạn chế này và cấu trúc công việc phù hợp, thay vì mong đợi AI xử lý toàn bộ độ phức tạp của phát triển phần mềm hiện đại một cách độc lập.

Tham khảo: Why LLMs Can't Really Build Software