Chủ đề thịnh hành
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Chuyển ngữ: Tại sao các mô hình ngôn ngữ lớn không thể thực sự xây dựng phần mềm
Tác giả: Conrad Irwin
Tôi đã dành rất nhiều thời gian để phỏng vấn các kỹ sư phần mềm. Rõ ràng đây là một nhiệm vụ khó khăn, tôi không dám nói mình có bí quyết gì; nhưng trải nghiệm này thực sự đã cho tôi thời gian để suy ngẫm về những gì một kỹ sư phần mềm hiệu quả thực sự đang làm.
Vòng lặp cốt lõi của kỹ thuật phần mềm
Khi bạn quan sát một chuyên gia thực thụ, bạn sẽ thấy họ luôn thực hiện lặp đi lặp lại các bước sau:
* Xây dựng một mô hình tâm lý về yêu cầu.
* Viết (hy vọng là vậy?!) mã có thể đáp ứng yêu cầu.
* Xây dựng một mô hình tâm lý về hành vi thực tế của mã.
* Tìm ra sự khác biệt giữa hai điều đó, sau đó cập nhật mã (hoặc yêu cầu).
Có nhiều cách để hoàn thành những bước này, nhưng điểm mạnh của các kỹ sư hiệu quả là họ có khả năng xây dựng và duy trì các mô hình tâm lý rõ ràng.
Mô hình ngôn ngữ lớn hoạt động như thế nào?
Nói một cách công bằng, các mô hình ngôn ngữ lớn rất xuất sắc trong việc viết mã. Khi bạn chỉ ra vấn đề, chúng cũng làm tốt việc cập nhật mã. Chúng có thể làm tất cả những gì mà các kỹ sư thực thụ sẽ làm: đọc mã, viết và chạy thử nghiệm, thêm nhật ký, và (có lẽ) sử dụng trình gỡ lỗi.
Nhưng điều chúng không thể làm là duy trì một mô hình tâm lý rõ ràng.
Các mô hình ngôn ngữ lớn sẽ rơi vào sự bối rối vô tận: chúng sẽ giả định rằng mã mà chúng viết thực sự có thể sử dụng; khi thử nghiệm thất bại, chúng chỉ có thể đoán xem có nên sửa mã hay sửa thử nghiệm; khi cảm thấy thất vọng, chúng sẽ xóa mọi thứ và bắt đầu lại.
Điều này hoàn toàn trái ngược với những gì tôi mong đợi ở một kỹ sư.
Kỹ sư phần mềm sẽ vừa làm vừa thử nghiệm. Khi thử nghiệm thất bại, họ có thể đối chiếu với mô hình tâm lý của mình để quyết định có nên sửa mã hay sửa thử nghiệm, hoặc thu thập thêm thông tin trước khi đưa ra quyết định. Khi họ cảm thấy thất vọng, họ có thể tìm kiếm sự giúp đỡ bằng cách giao tiếp với người khác. Mặc dù đôi khi họ cũng sẽ xóa mọi thứ và bắt đầu lại, nhưng đó là lựa chọn được đưa ra sau khi đã hiểu rõ hơn về vấn đề.
Nhưng sẽ sớm thôi, đúng không?
Khi khả năng của mô hình ngày càng mạnh, liệu điều này có thay đổi không? Có thể chăng?? Nhưng tôi nghĩ điều này cần một sự thay đổi căn bản trong cách mà mô hình xây dựng và tối ưu hóa. Mô hình mà kỹ thuật phần mềm cần không chỉ đơn giản là có thể tạo ra mã.
Khi một người gặp vấn đề, họ có thể tạm thời gác lại toàn bộ bối cảnh, tập trung vào việc giải quyết vấn đề trước mắt, rồi sau đó quay lại với những suy nghĩ trước đó, trở lại với vấn đề lớn hơn. Họ cũng có thể chuyển đổi linh hoạt giữa cái nhìn tổng thể và chi tiết, tạm thời bỏ qua chi tiết để tập trung vào tổng thể, và có thể đi sâu vào chi tiết khi cần thiết. Chúng ta sẽ không chỉ vì nhét thêm nhiều từ vào "cửa sổ bối cảnh" của mình mà trở nên hiệu quả hơn, điều đó chỉ khiến chúng ta phát điên.
Ngay cả khi chúng ta có thể xử lý một lượng lớn bối cảnh, chúng ta cũng biết rằng các mô hình sinh hiện tại có một số vấn đề nghiêm trọng, những vấn đề này ảnh hưởng trực tiếp đến khả năng duy trì mô hình tâm lý rõ ràng của chúng:
* Thiếu sót bối cảnh: mô hình không giỏi trong việc phát hiện thông tin bối cảnh bị bỏ qua.
* Thiên lệch gần đây: chúng bị ảnh hưởng nghiêm trọng bởi thiên lệch gần đây khi xử lý cửa sổ bối cảnh.
* Ảo giác: chúng thường "hình dung" ra một số chi tiết không nên tồn tại.
Những vấn đề này có thể không phải là không thể vượt qua, các nhà nghiên cứu cũng đang nỗ lực để tăng cường trí nhớ cho mô hình, để chúng có thể thực hiện các kỹ năng tư duy tương tự như chúng ta. Nhưng thật không may, hiện tại, chúng (sau một mức độ phức tạp nhất định) thực sự không thể hiểu điều gì đang xảy ra.
Chúng không thể xây dựng phần mềm vì chúng không thể duy trì hai "mô hình tâm lý" tương tự cùng một lúc, tìm ra sự khác biệt giữa chúng và quyết định có nên cập nhật mã hay cập nhật yêu cầu.
Vậy bây giờ phải làm gì?
Rõ ràng, các mô hình ngôn ngữ lớn rất hữu ích cho các kỹ sư phần mềm. Chúng có thể nhanh chóng tạo ra mã và thể hiện xuất sắc trong việc tích hợp yêu cầu và tài liệu. Đối với một số nhiệm vụ, điều này đã đủ: yêu cầu đủ rõ ràng, vấn đề đủ đơn giản, chúng có thể hoàn thành ngay lập tức.
Nói như vậy, đối với bất kỳ nhiệm vụ nào có chút phức tạp, chúng không thể duy trì đủ bối cảnh một cách chính xác để thông qua lặp lại cuối cùng sản xuất ra một giải pháp khả thi. Bạn, với tư cách là một kỹ sư phần mềm, vẫn cần chịu trách nhiệm đảm bảo yêu cầu rõ ràng và đảm bảo mã thực sự thực hiện chức năng mà nó tuyên bố.
Tại Zed, chúng tôi tin rằng trong tương lai, con người và các thực thể AI có thể hợp tác để xây dựng phần mềm. Tuy nhiên, chúng tôi kiên quyết tin rằng (ít nhất là hiện tại) bạn mới là người cầm lái, trong khi các mô hình ngôn ngữ lớn chỉ là một công cụ khác trong tầm tay bạn.
62,83K
Hàng đầu
Thứ hạng
Yêu thích