Nhà phát triển đó là ChatGPT và tôi có mối quan hệ yêu-ghét với nó.
Ngày nay có rất nhiều bài viết về AI, vì vậy tôi sẽ cố gắng viết bài này thật ngắn gọn.
Sử dụng ChatGPT để viết mã giống như có một nhà phát triển Junior dưới quyền bạn. Họ có thể lấy mã 80% ở đó, nhưng thực tế bạn sẽ cần xem lại từng dòng.
Tôi phải thừa nhận rằng có rất nhiều cách bạn có thể sử dụng ChatGPT để giúp viết mã. Nó có thể tốt hơn ở một số trong số họ và tệ hơn ở những người khác.
Ví dụ, tôi đã nghe nhiều người sử dụng nó như một công cụ tìm kiếm. Cá nhân tôi thấy rằng một chút nghi vấn. Không khó để tìm tài liệu hoặc thậm chí câu trả lời thông qua tìm kiếm. Tôi sử dụng Kagi giúp cắt bớt lông tơ.
Ngược lại, sử dụng ChatGPT, làm cách nào để biết câu trả lời có đúng không?
Ở phía bên kia của quang phổ, có rất nhiều người sử dụng nó như một công cụ tự động hoàn thành được tôn vinh. Một cái gì đó giống như Github Copilot . Tôi có thể thấy điều đó hữu ích.
Kịch bản tôi đã chọn là:
Đang chuyển đổi mã của tôi từ chakra-ui sang tailwindcss .
Tại sao?
Nhìn quanh lĩnh vực này, có vẻ như việc thúc giục tốt là sự khác biệt giữa việc đạt được kết quả tốt hay tầm thường. Tôi không phải là người giỏi nhất trong khoản này, nhưng tôi đã nghiên cứu và cố gắng hết sức.
Tôi đảm bảo sử dụng nhiều lời nhắc để đưa nó về trạng thái tốt. Chỉ dán mã của tôi bất cứ khi nào có vẻ như nó biết nó chỉ nên chuyển đổi mã của tôi.
Thành thật mà nói, phần này có thể được cải thiện. Giữa giao diện người dùng và tương tác, việc sử dụng khá khó khăn:
Có thể mất một thời gian để nó đạt đến trạng thái mong muốn
Giữa lúc tôi suy nghĩ về những gì sẽ viết, sau đó chờ đợi nó phản hồi và viết xong, tôi cảm thấy khá khó chịu khi làm công việc này.
Nó không nhất quán
Việc bạn không thể luôn sử dụng lại các lời nhắc giống nhau cũng chẳng ích gì. ChatGPT có một số tính ngẫu nhiên, vì vậy tôi phải điều chỉnh lời nhắc mỗi lần. Sao chép-dán lời nhắc đã hoạt động trước đây không giúp được gì.
Rất dễ thoát khỏi trạng thái mong muốn
Ở trên là tốt nếu đó là một điều một lần. Nhưng tôi thấy rằng AI rất dễ quên mọi thứ sau lần chuyển đổi mã đầu tiên. Thành công lặp đi lặp lại nhiều nhất mà tôi có được là 3 lần tôi tin tưởng. Ngoài ra, nó trả về những thứ hoàn toàn không liên quan như giải thích mã của tôi làm gì.
Mã thông báo là một yếu tố khá hạn chế
Chỉ có rất nhiều mã mà nó có thể tạo ra do giới hạn mã thông báo của nó. Bạn có thể kiểm tra mã thông báo tại đây để xem cách tính toán mã thông báo . Nó không thân thiện lắm với mã. Dưới đây là một ví dụ về một trong những kết quả đầu ra của nó. Mỗi màu khác nhau đại diện cho một mã thông báo.
Vì điều này, tôi phải chia chuyển đổi thành nhiều bước. Nếu không, thế hệ sẽ dừng lại giữa chừng. Bảo nó tiếp tục không hoạt động trong hầu hết thời gian. Kết hợp với các điểm trên, điều này nhanh chóng trở thành một việc vặt phải làm.
Nói chung, cảm giác mà tôi nhận được là tôi không muốn viết tiếng Anh. Nếu tôi đã phải viết một cái gì đó, tôi muốn trực tiếp viết mã hoạt động.
Tôi có thể thấy kỹ thuật nhanh chóng là một kỹ năng quan trọng cần có trong tương lai. Tương tự như việc biết cách tìm kiếm là một kỹ năng quan trọng trong thế giới ngày nay.
Đối với tất cả công việc phải làm, ChatGPT đã tạo ra một số mã khá ấn tượng. Dưới đây là một số so sánh giữa bản gốc và kết quả:
Như bạn có thể thấy, nó đã làm rất tốt công việc.
Tốt
Cấu trúc được đưa vào khá tốt
Khác với các chi tiết, cấu trúc HTML khá giống với bản gốc. Khoảng cách bị tắt, nhưng bố cục tổng thể vẫn còn.
Nội dung văn bản không thay đổi
Bản thân nội dung đã được xử lý tốt. Mặc dù tôi đã phải kiểm tra lại tất cả chúng, nhưng không có cái nào bị thay đổi. Ngoại lệ duy nhất là những thứ bắt nguồn từ JS.
Những người xấu
Nó có các lớp ngẫu nhiên
Có rất nhiều lớp không làm gì cả. Một số đã được thay đổi và một số khác là lớp tailwind không hợp lệ.
Có rất nhiều sự khác biệt nhỏ
Giao diện người dùng trông như thể một thư viện vừa được nâng cấp và ai đó đã quên di chuyển mã. Trong trường hợp này là do ChatGPT đã thay đổi ngẫu nhiên giá trị của các lớp. Ví dụ: padding
từ 3 đến 4 hoặc thay đổi font-weight
từ đậm sang bình thường. Các chi tiết đều sai.
Nó không hoạt động một nửa thời gian
Các ảnh chụp màn hình ở trên là những ảnh mà tôi có thể so sánh trực tiếp. Trên thực tế, kết quả không đầy đủ hoặc chỉ sai đến mức tôi phải thực hiện nhiều thay đổi để nó hoạt động. Và vì điều đó, tôi không thể so sánh nó cạnh nhau. Đơn giản là không có gì tôi có thể so sánh được vì mã không chạy.
Điều tuyệt vời về điều này là tôi có một cái gì đó để làm việc. Rất may, bản thân công việc rất đơn giản. Thật dễ dàng để phát hiện ra lỗi. Ánh xạ giữa các lớp từ chakra-ui và tailwind gần như là một đối một. Nó chỉ tẻ nhạt vì cú pháp khác.
Nhưng cách tiếp cận này giống với việc xem xét các PR hơn. Tôi đã phải quét qua toàn bộ mã để đảm bảo mọi thứ được thực hiện chính xác.
Nó có vẻ ổn ngay từ cái nhìn đầu tiên. Nhưng có rất nhiều vấn đề khi bạn làm việc với nó và chú ý kỹ. Nó mang lại cảm giác an toàn sai lầm khiến tôi hơi thất vọng khi tôi phát hiện ra tất cả các sai sót.
Một phần lớn của nó là mã được nội suy từ các cơ sở mã khác. Nó không có vẻ khủng khiếp, nhưng nó không phải là những gì tôi muốn.
Thậm chí có một số thay đổi đáng báo động như thay đổi tiêu đề từ h2 thành h1. Tôi chỉ có thể cho rằng nó đã làm điều này vì nội dung.
Có cảm giác như một nhà phát triển cơ sở đã ghép thứ gì đó lại với nhau và không kiểm tra mã của họ . Và bây giờ tôi phải xem lại và sửa chữa nó mà không thể bảo họ tự sửa chữa.
Và điều này thật kinh khủng. Tôi đã hoàn thành việc xem xét các PR tại nơi làm việc. Bây giờ tôi cũng phải làm điều đó cho các dự án của riêng mình? Không, cám ơn!
Mặc dù tôi không nghĩ rằng nó ở gần đó, nhưng tôi nghĩ rằng AI sẽ hữu ích vào một thời điểm nào đó cho sự phát triển trong tương lai. Cho dù câu trả lời là LLMs, ai biết?
Giới hạn mã thông báo liên tục tăng
Tôi đã trì hoãn việc hoàn thành bài viết này đủ lâu. Trong thời gian đó, có rất nhiều thông báo về việc tăng giới hạn mã thông báo. Mặc dù tôi không chắc liệu nó có công khai, trả phí hay không, nhưng điều này thật tuyệt khi được xem.
Nhắc UX sẽ trở nên dễ dàng hơn theo thời gian
Với các plugin ChatGPT và khả năng tích hợp tốt hơn, các vấn đề như ghi nhớ trạng thái và tính nhất quán sẽ được cải thiện. Hy vọng rằng điều đó sẽ giảm bớt nỗ lực cần thiết để có được kết quả hữu ích từ ChatGPT.
Trong thời gian chờ đợi, tôi đã hoàn thành nửa còn lại của quá trình di chuyển theo cách thủ công. Nó có nhanh hơn không? Chà, ai biết được. Nó cảm thấy như nhau. Nhưng viết nó bằng tay đã cảm thấy tốt hơn rất nhiều.