ChatGPT hay Gemini là chatbot AI viết code tốt hơn?

Nếu đang mắc kẹt trong một dự án lập trình, bạn có thể tìm kiếm một công cụ giúp mình lên ý tưởng, viết code rõ ràng hoặc giải thích một khái niệm phức tạp. Bạn chọn chatbot AI nào: Gemini nhanh nhẹn và giàu thông tin hay ChatGPT toàn diện và mạnh mẽ?

Hỗ trợ ngôn ngữ

Khi nói đến hỗ trợ ngôn ngữ, ChatGPT vượt trội hơn Gemini. Mặc dù Gemini chính thức hỗ trợ khoảng 22 ngôn ngữ lập trình phổ biến - bao gồm Python, Go và TypeScript - khả năng ngôn ngữ của ChatGPT còn mở rộng hơn nhiều.

Không giống như Gemini, ChatGPT không có danh sách chính thức các ngôn ngữ được hỗ trợ. Tuy nhiên, nó không chỉ có thể xử lý các ngôn ngữ phổ biến được Gemini hỗ trợ mà còn có thể xử lý hàng tá ngôn ngữ bổ sung, từ những ngôn ngữ mới hơn như TypeScript và Go đến các ngôn ngữ cũ hơn như Fortran, Pascal và BASIC.

Để kiểm tra khả năng ngôn ngữ của chúng, tác giả bài viết đã thử các tác vụ mã hóa đơn giản bằng những ngôn ngữ như PHP, JavaScript, BASIC và C++. Cả Gemini và ChatGPT đều hoạt động tốt với các ngôn ngữ phổ biến, nhưng chỉ ChatGPT mới có thể kết hợp những chương trình với nhau một cách thuyết phục bằng các ngôn ngữ cũ hơn như BASIC.

Độ chính xác và chất lượng code

Bạn đang bị trễ thời hạn dự án và cần một số code soạn sẵn. Khi yêu cầu ChatGPT và Gemini tạo code để triển khai chức năng đó, cả hai công cụ đều tạo ra hàng tá dòng code.

Nhưng có thể tin cậy code của công cụ nào để dùng cho chức năng mà bạn yêu cầu? Để so sánh độ chính xác và chất lượng của code do hai chatbot AI tạo ra, tác giả đã giao cho chúng một nhiệm vụ đơn giản. Tác giả đã yêu cầu Gemini và ChatGPT tạo một ứng dụng danh sách việc cần làm đơn giản bằng cách sử dụng HTML, CSS và JavaScript, không cung cấp bất kỳ thông tin mồi nào; mục tiêu là để xem cả hai chatbot có thể hoạt động tốt ra sao với lượng thông tin hạn chế khi làm việc.

ChatGPT (GPT-4o) đã tạo ra code chức năng có tính thẩm mỹ "đủ tốt". Sử dụng mã của ChatGPT, bạn có thể thêm hoặc xóa tác vụ. Đây là những gì nhận được sau khi chạy kết quả của ChatGPT trên trình duyệt:

Ứng dụng danh sách việc cần làm của ChatGPT từ OpenAI (GPT-4o)
Ứng dụng danh sách việc cần làm của ChatGPT từ OpenAI (GPT-4o)

Tiếp theo, yêu cầu Gemini của Google lặp lại nhiệm vụ tương tự. Gemini cũng có thể tạo ra một ứng dụng danh sách việc cần làm đầy chức năng. Bạn cũng có thể thêm và xóa các tác vụ nhưng thiết kế tổng thể không hấp dẫn bằng:

Ứng dụng danh sách việc cần làm của Google Gemini 
Ứng dụng danh sách việc cần làm của Google Gemini

Tác giả đã thực hiện thử nghiệm thứ hai, lần này yêu cầu cả hai chatbot tạo lại nguồn cấp dữ liệu Twitter (X.com). ChatGPT đã tạo ra nguồn cấp dữ liệu Twitter theo phong cách cổ điển với tính năng tweet chức năng. Có thể nhập vào hộp văn bản, gửi một dòng tweet và upload nó lên trang một cách linh hoạt. Đó không phải là nguồn cấp dữ liệu Twitter mong đợi, nhưng vì hầu hết dữ liệu đào tạo của ChatGPT chứa đầy code Twitter cũ nên kết quả có thể hiểu được.

Bản sao nguồn cấp dữ liệu Twitter (X.com) bởi ChatGPT
Bản sao nguồn cấp dữ liệu Twitter (X.com) bởi ChatGPT

Thật không may, trong vòng này, Gemini của Google không thể cung cấp code chức năng. Nó tạo ra hàng trăm dòng code JavaScript, nhưng có quá nhiều phần giữ chỗ cần được điền vào mà thiếu logic. Nếu bạn đang vội, code nhiều trình giữ chỗ như vậy sẽ không hữu ích, vì nó vẫn đòi hỏi công việc phát triển nặng nề. Trong những trường hợp như vậy, việc viết code từ đầu có thể sẽ hiệu quả hơn.

Tác giả đã thử một số tác vụ mã hóa cơ bản khác và trong mọi trường hợp, giải pháp của ChatGPT rõ ràng là lựa chọn tốt hơn.

Gỡ và phát hiện lỗi

Lỗi giống như những câu đố mà các lập trình viên rất ghét. Chúng sẽ khiến bạn phát điên, nhưng việc sửa chúng cũng mang lại cảm giác khá thỏa mãn. Vì vậy, khi gặp lỗi trong code, bạn có nên sử dụng Gemini hoặc ChatGPT để được trợ giúp không? Câu trả lời phụ thuộc vào loại lỗi bạn đang cố tránh.

Tác giả đã đưa cho cả hai chatbot AI 2 vấn đề cần gỡ lỗi. Đầu tiên, tác giả yêu cầu cả hai chatbot giải quyết lỗi logic trong một số code PHP đơn giản. Lỗi logic nổi tiếng là khó phát hiện hơn lỗi cú pháp vì chúng phụ thuộc vào mục đích của code:

Code PHP có lỗi logic
Code PHP có lỗi logic

Code trong ảnh chụp màn hình này chạy và thậm chí còn tạo ra kết quả đúng trong nhiều trường hợp. Tuy nhiên, nó có một số lỗi logic không thể hiện rõ ngay lập tức; Bạn có thể nhận ra chúng không? Với sự trợ giúp của Gemini, thật không may, chatbot không thể tìm ra lỗi logic trong code:

Gemini không phát hiện ra lỗi logic
Gemini không phát hiện ra lỗi logic

Cả ba nỗ lực giải quyết vấn đề của Gemini đều không chính xác. Thử một vấn đề tương tự trong 6 tháng trước cũng cho kết quả đáng thất vọng tương tự; có vẻ như Gemini chưa tiến bộ hơn trong lĩnh vực này.

Sau đó tác giả đã yêu cầu ChatGPT giúp đỡ và nó ngay lập tức phát hiện ra lỗi logic.

ChatGPT phát hiện lỗi logic trong code
ChatGPT phát hiện lỗi logic trong code

Gemini cũng viết lại code để sửa lỗi:

ChatGPT viết lại code để sửa lỗi logic
ChatGPT viết lại code để sửa lỗi logic

Sau khi thử một số nhiệm vụ tìm lỗi và sửa lỗi khác, ChatGPT rõ ràng đã hoàn thành công việc tốt hơn. Tuy nhiên, Gemini không hoàn toàn vô dụng. Nó có thể sửa được rất nhiều lỗi cú pháp, nhưng gặp khó khăn với các lỗi phức tạp, đặc biệt là lỗi logic.

Nhận thức về bối cảnh

Một trong những thách thức lớn nhất khi sử dụng chatbot AI để mã hóa là khả năng nhận biết ngữ cảnh tương đối hạn chế của chúng. Chúng có thể tạo các đoạn code riêng biệt cho những tác vụ được xác định rõ ràng nhưng lại gặp khó khăn trong việc xây dựng cơ sở code cho một dự án lớn hơn.

Ví dụ, giả sử bạn đang xây dựng một ứng dụng web với chatbot AI. Bạn yêu cầu nó viết code cho trang HTML đăng ký và đăng nhập, sau đó nó thực hiện điều đó một cách hoàn hảo. Sau đó, bạn yêu cầu chatbot tạo script phía máy chủ để xử lý logic đăng nhập. Đây là một nhiệm vụ đơn giản nhưng do nhận thức ngữ cảnh hạn chế nên cuối cùng nó có thể tạo ra một script đăng nhập với các biến mới và quy ước đặt tên không khớp với phần còn lại của code.

Chatbot nào tốt hơn trong việc duy trì nhận thức ngữ cảnh? Tác giả bài viết đã giao cho cả hai công cụ cùng một nhiệm vụ lập trình: Tạo một ứng dụng trò chuyện.

Kể từ khi GPT-4 Turbo xuất hiện với cửa sổ ngữ cảnh 128k của nó, khả năng giữ lại nhiều ngữ cảnh hơn trong thời gian dài của ChatGPT đã tăng lên đáng kể. Khi lần đầu xây dựng ứng dụng trò chuyện với ChatGPT bằng cửa sổ ngữ cảnh 4k GPT-4, ứng dụng này hoạt động tương đối suôn sẻ, chỉ có một số sự cố nhỏ là chuyển hướng ngữ cảnh.

Việc tái tạo lại dự án tương tự vào tháng 11 năm 2023 với GPT-4 Turbo 128k cho thấy sự cải thiện rõ rệt về nhận thức bối cảnh. 6 tháng sau, vào tháng 5 năm 2024, nhận thức về bối cảnh không có bất kỳ thay đổi đáng kể nào nhưng cũng không có sự suy giảm.

Thật không may, khi dùng thử Gemini (lúc đó được gọi là Bard) lần đầu tiên trong cùng một dự án, nó đã mất dấu bối cảnh của dự án và không thể hoàn thành ứng dụng. Một vài đợt cập nhật sau đó, khi kiểm tra lại Gemini trên cùng một dự án, nó dường như đã xuống cấp hơn nữa. Vì vậy, một lần nữa, về mặt nhận thức ngữ cảnh, ChatGPT lại thắng.

Giải quyết vấn đề

Tại thời điểm này, Gemini của Google đang thiếu rất nhiều mặt. Nhưng liệu cuối cùng Gemini có thể giành được chiến thắng? Hãy kiểm tra khả năng giải quyết vấn đề của nó. Đôi khi bạn gặp một vấn đề nhưng không chắc chắn về cách trình bày nó theo chương trình chứ chưa nói đến cách giải quyết nó.

Trong những tình huống này, các chatbot như Gemini và ChatGPT có thể hữu ích. Tác giả yêu cầu cả hai "Viết code JavaScript đếm số lần một từ cụ thể xuất hiện trong văn bản".

Đây là kết quả từ Gemini của Google:

Gemini không tạo được chức năng Javascript tối ưu hóa
Gemini không tạo được chức năng Javascript tối ưu hóa

Và đây là kết quả từ ChatGPT:

ChatGPT cố gắng tạo chức năng đếm từ trong một đoạn văn bản
ChatGPT cố gắng tạo chức năng đếm từ trong một đoạn văn bản

Lúc đầu, cả hai cách tiếp cận đều trông khá đáng tin cậy. Cách tiếp cận của Gemini thậm chí còn có vẻ ngắn gọn. Tuy nhiên, code của ChatGPT có cách tiếp cận mạnh mẽ và chính xác hơn để đếm số lần xuất hiện của từ trong văn bản. Nó xem xét ranh giới từ và phân biệt chữ hoa chữ thường, xử lý dấu câu đúng cách và đưa ra kết quả đáng tin cậy hơn. Một lần nữa, ChatGPT lại vượt trội hơn.

Cách tiếp cận của ChatGPT chia văn bản đầu vào thành các từ theo cách có thể xử lý tất cả những ký tự không phải từ như dấu chấm câu và các ký tự đặc biệt làm dấu phân cách từ. Trong khi đó, Gemini chỉ coi khoảng trắng là dấu phân cách. Cách tiếp cận này có thể thất bại nếu văn bản chứa dấu chấm câu hoặc các ký tự không phải từ khác trong từ hoặc nếu các từ không được phân tách bằng ký tự khoảng trắng.

Vì Google Gemini đã thua khá nhiều ở mọi số liệu được sử dụng để so sánh nên tác giả quyết định cho nó một cơ hội chuộc lỗi. Tác giả hỏi chatbot "Cái nào giỏi vieest code hơn? ChatGPT hay Gemini?" Đây là câu trả lời của nó:

Gemini trả lời câu hỏi về bản thân
Gemini trả lời câu hỏi về bản thân

Sau đó, tác giả đã hỏi ChatGPT nghĩ gì về đánh giá này và nó đã đồng ý:

ChatGPT đồng tình với đánh giá của Gemini về khả năng của mình
ChatGPT đồng tình với đánh giá của Gemini về khả năng của mình

Mặc dù điều này có vẻ khá bình thường nhưng lại có một sự thay đổi thú vị ở đây. Trong năm ngoái, Gemini (lúc đó là Bard) luôn tự tin khẳng định rằng mình có thể tạo ra code tốt, hiệu quả và ít mắc lỗi hơn. Đây là ảnh chụp màn hình từ một trong những thử nghiệm vào tháng 11 năm 2023:

Google Bard tự hào là tốt hơn ChatGPT
Google Bard tự hào là tốt hơn ChatGPT

Có vẻ như Gemini bây giờ đã tự giác và khiêm tốn hơn một chút rồi!

Tính năng lập trình

Cả ChatGPT và Gemini đều không có các tính năng chính dành riêng cho lập trình. Tuy nhiên, cả hai chatbot đều có các tính năng có thể nâng cao đáng kể trải nghiệm lập trình nếu bạn biết cách sử dụng chúng một cách hiệu quả.

ChatGPT cung cấp một loạt tính năng có thể hợp lý hóa quy trình lập trình khi sử dụng chatbot. Các bổ sung hữu ích như Memory và Custom GPT cho phép bạn tùy chỉnh ChatGPT cho nhu cầu lập trình cụ thể của mình.

Ví dụ, tính năng Custom GPT có thể giúp tạo các phiên bản ChatGPT nhỏ chuyên dụng cho những dự án cụ thể bằng cách upload lên các file có liên quan. Điều này làm cho các tác vụ như gỡ lỗi code, tối ưu hóa và thêm những tính năng mới trở nên đơn giản hơn nhiều. Nhìn chung, so với Gemini của Google, ChatGPT bao gồm nhiều tính năng hơn có thể nâng cao trải nghiệm lập trình.

Thứ Tư, 05/06/2024 11:24
51 👨 557
0 Bình luận
Sắp xếp theo
    ❖ Trí tuệ nhân tạo (AI)