Cách dùng ChatGPT sửa lỗi code
Bùi Tấn Lực
- 103
- 03/10/2026
Khi lập trình gặp lỗi, vấn đề không phải lúc nào cũng nằm ở đúng dòng mà thông báo lỗi chỉ ra. Một biến có thể sai từ trước, một hàm nhận dữ liệu không đúng kiểu, một truy vấn trả về kết quả khác dự kiến hoặc một thay đổi nhỏ ở phần này lại làm hỏng phần khác. Vì vậy, nếu chỉ nhìn vào thông báo lỗi rồi sửa theo cảm tính, bạn rất dễ tạo thêm lỗi mới.
ChatGPT có thể hỗ trợ quá trình này bằng cách đọc đoạn code, phân tích thông báo lỗi, tìm điểm bất thường, giải thích nguyên nhân và đề xuất cách sửa. Quan trọng hơn, bạn có thể yêu cầu ChatGPT phân tích theo từng bước thay vì chỉ đưa ra một đoạn code mới. Cách làm này giúp người lập trình hiểu vì sao chương trình lỗi và hạn chế việc sửa code theo kiểu thử sai.
Hiệu quả của việc nhờ ChatGPT sửa lỗi phụ thuộc khá nhiều vào thông tin được cung cấp. Một đoạn code bị cắt mất phần quan trọng, không có thông báo lỗi hoặc thiếu mô tả về kết quả mong muốn có thể khiến việc phân tích thiếu chính xác. Do đó, muốn dùng ChatGPT như một trợ lý debug thực sự hữu ích, trước hết cần biết cách đưa lỗi vào cuộc trò chuyện đúng cách.

ChatGPT có thể hỗ trợ sửa những loại lỗi code nào?
ChatGPT có thể hỗ trợ nhiều công việc liên quan đến quá trình debug, từ những lỗi cú pháp đơn giản cho đến việc phân tích luồng xử lý phức tạp. Tuy nhiên, không nên hiểu rằng chỉ cần gửi bất kỳ đoạn code nào thì hệ thống luôn xác định được chính xác nguyên nhân. Code càng lớn và càng thiếu ngữ cảnh, khả năng phân tích sai càng tăng.
Với lỗi cú pháp, bạn có thể cung cấp đoạn code cùng thông báo lỗi để yêu cầu xác định vị trí và nguyên nhân. Với lỗi logic, cần mô tả thêm chương trình đang làm gì, kết quả hiện tại là gì và kết quả mong muốn là gì. Đây là điểm rất quan trọng vì một chương trình có thể chạy hoàn toàn bình thường nhưng vẫn cho ra kết quả sai.
ChatGPT cũng có thể hỗ trợ đọc và chỉnh sửa nhiều loại mã nguồn phổ biến như HTML, CSS, JavaScript, PHP, Python, SQL và nhiều ngôn ngữ khác. Khả năng xử lý code trong ChatGPT còn có thể bao gồm việc đọc, chỉnh sửa hoặc làm việc với các tệp tùy theo tính năng đang được cung cấp cho tài khoản.
Trong những dự án phức tạp hơn, việc cung cấp thêm cấu trúc thư mục, file liên quan, phiên bản thư viện hoặc cách tái hiện lỗi sẽ giúp quá trình phân tích có cơ sở hơn. Với các workflow lập trình chuyên sâu, OpenAI hiện cũng mô tả Codex là công cụ có khả năng viết, review, debug code và làm việc với repository, nhưng đây là một workflow khác với việc đơn giản đặt câu hỏi trong cuộc trò chuyện.
Lỗi cú pháp
Lỗi cú pháp thường xuất hiện khi code không tuân thủ quy tắc của ngôn ngữ lập trình. Ví dụ có thể là thiếu dấu ngoặc, thiếu dấu chấm phẩy ở những ngôn ngữ yêu cầu, viết sai tên hàm hoặc sử dụng cấu trúc không hợp lệ.
Đây là nhóm lỗi tương đối phù hợp để nhờ ChatGPT kiểm tra vì thông báo lỗi và đoạn code thường đã cung cấp khá nhiều manh mối. Tuy nhiên, nên yêu cầu ChatGPT giải thích nguyên nhân thay vì chỉ yêu cầu viết lại toàn bộ đoạn code.
Lỗi logic
Lỗi logic khó phát hiện hơn vì chương trình vẫn có thể chạy nhưng kết quả không đúng. Chẳng hạn, điều kiện kiểm tra bị đảo ngược, phép tính sử dụng sai biến hoặc một vòng lặp dừng ở thời điểm không mong muốn.
Với loại lỗi này, chỉ gửi code thường chưa đủ. Bạn nên cho ChatGPT biết kết quả hiện tại, kết quả bạn muốn nhận được và một trường hợp dữ liệu cụ thể để đối chiếu.
Lỗi do dữ liệu hoặc môi trường
Một đoạn code có thể đúng về mặt cú pháp nhưng vẫn không hoạt động vì dữ liệu đầu vào, cấu hình máy chủ, phiên bản thư viện, quyền truy cập, kết nối cơ sở dữ liệu hoặc môi trường chạy không phù hợp.
Trong trường hợp này, ChatGPT cần nhiều thông tin hơn một đoạn code ngắn. Nếu chỉ yêu cầu “sửa lỗi” mà không cung cấp môi trường và thông báo lỗi thực tế, câu trả lời có thể chỉ dừng ở mức giả thuyết.
Cần chuẩn bị gì trước khi gửi code cho ChatGPT?
Trước khi đặt câu hỏi, hãy thu thập những thông tin trực tiếp liên quan đến lỗi. Mục tiêu không phải gửi toàn bộ dự án một cách thiếu chọn lọc mà là cung cấp đủ dữ liệu để ChatGPT tái hiện được vấn đề về mặt logic.
- Đoạn code gây lỗi: gửi phần có liên quan thay vì cắt bỏ những dòng có thể ảnh hưởng đến kết quả.
- Thông báo lỗi: nếu môi trường chạy có báo lỗi, nên gửi nguyên văn thông báo thay vì chỉ mô tả lại bằng vài từ.
- Kết quả hiện tại: cho biết chương trình đang trả về hoặc hiển thị điều gì.
- Kết quả mong muốn: mô tả chính xác bạn muốn chương trình hoạt động như thế nào.
- Môi trường chạy: khi cần, nêu ngôn ngữ, phiên bản, framework, thư viện hoặc hệ quản trị cơ sở dữ liệu liên quan.
- Cách tái hiện: mô tả các bước khiến lỗi xuất hiện.
Ví dụ, thay vì viết “PHP của tôi bị lỗi, sửa giúp”, một yêu cầu có thông tin rõ ràng sẽ hữu ích hơn:
Đây là đoạn PHP đang xử lý dữ liệu từ form. Khi gửi form,
tôi nhận được lỗi "Undefined array key". Hãy tìm nguyên nhân,
giải thích vì sao lỗi xảy ra và chỉ sửa phần cần thiết.
Không viết lại toàn bộ đoạn code nếu không cần.
[Đoạn code được đặt ở đây]
Kết quả tôi mong muốn:
- Nếu người dùng nhập đầy đủ dữ liệu thì lưu thông tin.
- Nếu thiếu email thì hiển thị thông báo lỗi.
Cách yêu cầu này tạo ra một phạm vi xử lý rõ ràng: tìm nguyên nhân, giải thích và sửa phần cần thiết. Nó cũng hạn chế tình trạng ChatGPT tự ý thay đổi những phần code vốn đang hoạt động bình thường.
Cách gửi lỗi để ChatGPT phân tích chính xác hơn
Một trong những cách hiệu quả nhất là tách quá trình debug thành ba phần: vấn đề, bằng chứng và mục tiêu. “Vấn đề” cho biết điều gì đang xảy ra, “bằng chứng” gồm code và thông báo lỗi, còn “mục tiêu” cho biết kết quả đúng phải như thế nào.
Bạn có thể xây dựng yêu cầu theo trình tự sau:
- Mô tả ngắn chức năng của đoạn code.
- Nêu chính xác lỗi đang xuất hiện.
- Đưa thông báo lỗi nguyên văn nếu có.
- Cung cấp đoạn code liên quan.
- Mô tả kết quả thực tế.
- Mô tả kết quả mong muốn.
- Yêu cầu ChatGPT phân tích nguyên nhân trước khi đưa ra bản sửa.
Ví dụ, nếu một hàm JavaScript không cập nhật được nội dung trên trang, đừng chỉ gửi toàn bộ file JavaScript. Hãy chỉ ra thao tác khiến lỗi xảy ra và phần HTML liên quan. Khi có đủ mối liên hệ giữa dữ liệu, sự kiện và đoạn code xử lý, việc phân tích sẽ có cơ sở hơn.
Đừng chỉ yêu cầu “sửa code”
Yêu cầu quá ngắn thường tạo ra câu trả lời cũng quá rộng. ChatGPT có thể đưa ra một phiên bản code khác với code ban đầu nhưng bạn vẫn không biết nguyên nhân thực sự nằm ở đâu.
Thay vào đó, hãy yêu cầu phân tích theo thứ tự. Chẳng hạn, bạn có thể yêu cầu xác định dòng hoặc đoạn có vấn đề, giải thích nguyên nhân, chỉ ra tác động của lỗi, sau đó mới đề xuất cách sửa. Nếu có nhiều nguyên nhân khả dĩ, hãy yêu cầu phân biệt nguyên nhân chính với những khả năng phụ.
Hãy phân tích đoạn code dưới đây theo thứ tự:
1. Xác định lỗi hoặc điểm bất thường.
2. Giải thích nguyên nhân bằng ngôn ngữ dễ hiểu.
3. Chỉ ra đoạn code liên quan đến lỗi.
4. Đề xuất cách sửa ít thay đổi nhất.
5. Giải thích vì sao bản sửa khắc phục được vấn đề.
6. Nếu chưa đủ dữ liệu để kết luận, hãy nói rõ thông tin còn thiếu.
Không tự ý thay đổi những phần không liên quan.
Cách đặt yêu cầu này đặc biệt hữu ích khi bạn đang học lập trình. Thay vì nhận một đoạn code mới rồi sao chép vào dự án, bạn có thể theo dõi được mối quan hệ giữa lỗi và cách sửa. Đây cũng là cách giảm sự phụ thuộc vào việc thử từng phương án mà không hiểu nguyên nhân.
Gửi toàn bộ code hay chỉ gửi đoạn code bị lỗi?
Không phải lúc nào gửi càng nhiều code thì ChatGPT càng phân tích tốt. Với lỗi nằm trong một hàm độc lập, chỉ cần gửi hàm đó cùng dữ liệu đầu vào và phần code gọi hàm là có thể đủ.
Ngược lại, nếu lỗi xuất hiện do nhiều thành phần tương tác, việc chỉ gửi một đoạn nhỏ có thể làm mất nguyên nhân. Ví dụ một biến được tạo ở file này nhưng được thay đổi ở file khác, một API trả dữ liệu cho JavaScript hoặc một câu truy vấn phụ thuộc vào cấu trúc bảng trong cơ sở dữ liệu.
Do đó, nên cung cấp phạm vi code nhỏ nhất nhưng vẫn đủ ngữ cảnh. Đây thường là cách cân bằng tốt hơn giữa lượng thông tin và khả năng phân tích.
Nếu dự án có nhiều file, bạn có thể cung cấp những file thực sự liên quan hoặc sử dụng các tính năng làm việc với tệp và dự án khi chúng khả dụng. ChatGPT hỗ trợ tải tài liệu và tệp vào cuộc trò chuyện; Projects cũng cho phép tập hợp các cuộc trò chuyện, tệp và hướng dẫn liên quan để duy trì ngữ cảnh cho công việc kéo dài.
Không nên gửi dữ liệu nhạy cảm cùng mã nguồn
Trước khi gửi code cho ChatGPT, hãy kiểm tra xem trong đó có mật khẩu, API key, token, thông tin đăng nhập, chuỗi kết nối cơ sở dữ liệu hoặc dữ liệu cá nhân hay không. Những giá trị này không cần thiết cho việc giải thích phần lớn lỗi lập trình.
Thay vì gửi thông tin thật, hãy thay thế bằng giá trị giả có cùng cấu trúc. Ví dụ, một chuỗi kết nối cơ sở dữ liệu có thể được thay bằng thông tin minh họa nhưng vẫn giữ nguyên tên biến và cấu trúc câu lệnh để ChatGPT hiểu cách code hoạt động.
Điều quan trọng là không biến quá trình debug thành việc công khai những thông tin mà người khác có thể dùng để truy cập hệ thống. Khi chỉ cần giá trị mẫu để phân tích, hãy dùng giá trị mẫu.
Cách dùng ChatGPT tìm nguyên nhân thay vì chỉ sửa triệu chứng
Một lỗi có thể xuất hiện ở một dòng nhưng nguyên nhân lại nằm ở nhiều dòng trước đó. Vì vậy, khi debug bằng ChatGPT, không nên chỉ yêu cầu thay đổi dòng đang báo lỗi. Hãy yêu cầu phân tích mối liên hệ giữa dữ liệu đầu vào, quá trình xử lý và kết quả đầu ra.
Ví dụ, một biến bị báo là chưa được định nghĩa không nhất thiết có nghĩa là bạn chỉ cần khai báo biến đó. Biến có thể đáng lẽ phải được tạo ra từ một hàm khác, một truy vấn cơ sở dữ liệu có thể không trả về dữ liệu hoặc một điều kiện trước đó khiến đoạn code tạo biến không được thực thi.
Cách tiếp cận tốt hơn là yêu cầu ChatGPT truy ngược luồng xử lý để tìm nguyên nhân gốc. Khi đó, câu trả lời không chỉ tập trung vào biểu hiện cuối cùng của lỗi mà còn xem xét những bước dẫn đến lỗi.
Hãy tìm nguyên nhân gốc của lỗi trong đoạn code này.
Không chỉ sửa dòng đang báo lỗi.
Hãy kiểm tra:
- Dữ liệu đầu vào được tạo ở đâu.
- Dữ liệu được xử lý như thế nào.
- Biến nào có thể chưa được tạo hoặc có giá trị không đúng.
- Điều kiện nào có thể khiến luồng xử lý đi sai.
- Vì sao lỗi chỉ xuất hiện trong trường hợp này.
Sau khi phân tích, hãy đưa ra bản sửa tối thiểu và giải thích từng thay đổi.
Với những đoạn code có nhiều bước xử lý, cách yêu cầu này giúp hạn chế việc sửa phần ngọn trong khi nguyên nhân thật sự nằm ở phần trước đó.
Phân biệt lỗi thực sự và cảnh báo
Trong quá trình lập trình, không phải mọi thông báo từ trình biên dịch, trình thông dịch hoặc công cụ kiểm tra code đều có mức độ nghiêm trọng giống nhau. Có thông báo khiến chương trình dừng, có thông báo chỉ cảnh báo về một vấn đề tiềm ẩn.
Khi gửi thông báo cho ChatGPT, nên yêu cầu xác định rõ loại vấn đề. Điều này giúp tránh việc thay đổi code chỉ để loại bỏ một cảnh báo trong khi bản thân logic chương trình vẫn đúng.
Bạn có thể yêu cầu ChatGPT phân loại từng thông báo thành lỗi cú pháp, lỗi thời gian chạy, cảnh báo, lỗi logic hoặc vấn đề về chất lượng code. Sau đó mới quyết định phần nào cần sửa ngay.
Yêu cầu ChatGPT giải thích từng dòng code bị lỗi
Khi chưa hiểu nguyên nhân, việc yêu cầu ChatGPT giải thích đoạn code trước khi sửa thường hữu ích hơn việc nhận ngay một phiên bản hoàn chỉnh. Bạn có thể yêu cầu giải thích theo từng dòng hoặc theo từng khối chức năng.
Không nhất thiết phải giải thích toàn bộ file. Chỉ nên tập trung vào đoạn có liên quan đến lỗi để tránh câu trả lời dài nhưng không giúp giải quyết vấn đề.
Hãy giải thích đoạn code này theo từng bước xử lý.
Tập trung vào phần có thể gây ra lỗi.
Với mỗi bước, hãy cho biết:
- Dữ liệu đầu vào là gì.
- Code đang thực hiện thao tác gì.
- Giá trị sau khi xử lý có thể là gì.
- Điều kiện nào có thể khiến kết quả khác dự kiến.
Chưa cần viết lại code ở bước này.
Sau khi hiểu được luồng xử lý, bạn có thể tiếp tục yêu cầu ChatGPT đề xuất bản sửa. Việc chia thành hai bước giúp bạn dễ kiểm tra xem cách phân tích có phù hợp với chương trình thực tế hay không.
Cách yêu cầu ChatGPT sửa code nhưng không phá phần đang chạy
Một vấn đề thường gặp khi nhờ AI sửa code là bản sửa có thể thay đổi quá nhiều thứ. Một hàm nhỏ đang gặp lỗi nhưng câu trả lời lại viết lại cả cấu trúc xử lý, đổi tên biến hoặc thay đổi cách tổ chức chương trình.
Điều này đặc biệt bất tiện với dự án đang hoạt động vì một thay đổi không cần thiết có thể tạo ra lỗi ở những phần vốn không có vấn đề.
Hãy xác định rõ phạm vi thay đổi. Nếu mục tiêu chỉ là sửa lỗi, yêu cầu giữ nguyên cấu trúc và chỉ thay đổi những dòng cần thiết.
Hãy sửa lỗi nhưng giữ nguyên cấu trúc hiện tại.
Yêu cầu:
- Không viết lại toàn bộ hàm nếu không cần.
- Không đổi tên biến đang được sử dụng.
- Không thay đổi giao diện đầu ra.
- Không thay đổi logic không liên quan đến lỗi.
- Chỉ chỉnh phần cần thiết để khắc phục vấn đề.
- Sau phần code đã sửa, liệt kê chính xác những dòng hoặc phần đã thay đổi và lý do.
Cách này đặc biệt phù hợp khi bạn đang sửa một website hoặc hệ thống đã có nhiều chức năng. Mục tiêu của debug không phải lúc nào cũng là tạo ra code đẹp hơn mà trước hết là đưa chương trình trở lại trạng thái hoạt động đúng.
Yêu cầu tạo bản sửa tối thiểu
“Bản sửa tối thiểu” có nghĩa là thay đổi ít nhất có thể nhưng vẫn giải quyết được nguyên nhân. Đây là một nguyên tắc hữu ích khi sửa lỗi trong code đang chạy ổn định.
Ví dụ, nếu lỗi nằm ở cách kiểm tra một điều kiện, không nhất thiết phải chuyển toàn bộ hàm sang một cấu trúc khác. Nếu một truy vấn sử dụng sai tên cột, không cần thay đổi toàn bộ phần xử lý dữ liệu phía sau nếu những phần đó vẫn hoạt động chính xác.
Bạn có thể yêu cầu ChatGPT đưa ra hai phần riêng biệt: bản sửa tối thiểu và phương án cải thiện nếu muốn tái cấu trúc code. Hai mục tiêu này không nên trộn lẫn vì sửa lỗi và tối ưu kiến trúc là hai công việc khác nhau.
Dùng dữ liệu thực tế để kiểm tra cách sửa
Một bản sửa nhìn hợp lý chưa chắc đã giải quyết được lỗi trong mọi trường hợp. Cách kiểm tra hữu ích là cung cấp một hoặc vài bộ dữ liệu cụ thể và yêu cầu ChatGPT mô phỏng kết quả trước và sau khi sửa.
Ví dụ, nếu một hàm tính tổng tiền cho đơn hàng, bạn có thể đưa vào trường hợp không có sản phẩm, một sản phẩm, nhiều sản phẩm và sản phẩm có giá trị đặc biệt. Những trường hợp này giúp phát hiện lỗi mà một ví dụ thông thường có thể bỏ qua.
Hãy kiểm tra bản sửa bằng các trường hợp sau:
Trường hợp 1:
Dữ liệu đầu vào: 1 sản phẩm, giá 100000, số lượng 2
Kết quả mong muốn: 200000
Trường hợp 2:
Dữ liệu đầu vào: 2 sản phẩm, tổng số lượng 3
Kết quả mong muốn: tính đúng tổng tiền
Trường hợp 3:
Dữ liệu đầu vào: không có sản phẩm
Kết quả mong muốn: không phát sinh lỗi
Hãy cho biết bản sửa có xử lý đúng từng trường hợp hay không.
Nếu có trường hợp chưa đúng, giải thích nguyên nhân.
Cách kiểm tra bằng dữ liệu cụ thể có giá trị hơn việc chỉ hỏi “code này đã đúng chưa?”. Một chương trình có thể đúng với dữ liệu thông thường nhưng vẫn lỗi khi gặp giá trị rỗng, giá trị bằng 0, dữ liệu quá lớn hoặc dữ liệu không đúng định dạng.
Cách xử lý khi ChatGPT sửa code nhưng lỗi vẫn còn
Nếu bản sửa đầu tiên không giải quyết được vấn đề, không nên lập tức gửi lại cùng một câu hỏi. Hãy cung cấp kết quả mới sau khi áp dụng bản sửa. Đây là thông tin quan trọng vì nó cho biết giả thuyết trước đó có đúng hay không.
Ví dụ, bạn có thể thông báo rằng lỗi cũ đã biến mất nhưng xuất hiện lỗi mới, hoặc chương trình không còn báo lỗi nhưng kết quả vẫn sai. Hai trường hợp này cần cách phân tích khác nhau.
Nếu lỗi vẫn giống hệt, hãy cho biết bạn đã áp dụng chính xác phần nào của bản sửa và thông báo lỗi hiện tại. Nếu lỗi thay đổi, gửi thông báo mới cùng đoạn code sau khi chỉnh sửa để ChatGPT phân tích trạng thái mới.
Tôi đã áp dụng bản sửa trước đó nhưng vấn đề chưa được giải quyết.
Kết quả hiện tại:
[ghi kết quả thực tế]
Thông báo lỗi hiện tại:
[ghi nguyên văn lỗi nếu có]
Đây là code sau khi đã sửa:
[đặt code ở đây]
Hãy bỏ qua giả định trước đó nếu nó không còn phù hợp.
Phân tích lại từ trạng thái code hiện tại và xác định nguyên nhân dựa trên dữ liệu mới.
Điểm quan trọng là luôn cập nhật cho ChatGPT trạng thái mới nhất của code. Nếu tiếp tục sử dụng đoạn code cũ trong khi chương trình thực tế đã thay đổi, việc phân tích có thể dựa trên một trạng thái không còn tồn tại.
Khi câu trả lời có nhiều nguyên nhân khả dĩ
Không phải lỗi nào cũng có thể xác định chắc chắn chỉ từ một đoạn code. Trong trường hợp thiếu dữ liệu, ChatGPT có thể đưa ra nhiều khả năng. Bạn không nên mặc nhiên xem khả năng đầu tiên là nguyên nhân chính.
Hãy yêu cầu ChatGPT xác định thông tin nào có thể dùng để phân biệt các khả năng đó. Chẳng hạn, có thể cần kiểm tra giá trị của một biến, kết quả truy vấn, response từ API hoặc thông tin phiên bản thư viện.
Hiện có nhiều khả năng gây ra lỗi.
Hãy:
1. Liệt kê các nguyên nhân có thể xảy ra.
2. Với mỗi nguyên nhân, chỉ ra bằng chứng trong code.
3. Cho biết cần kiểm tra thông tin nào để xác nhận hoặc loại bỏ nguyên nhân đó.
4. Chỉ đưa ra bản sửa chắc chắn khi đã có đủ cơ sở.
5. Nếu chưa đủ dữ liệu, hãy nói rõ phần còn thiếu thay vì đoán.
Cách này đặc biệt quan trọng với những lỗi liên quan đến môi trường chạy. Một lỗi kết nối cơ sở dữ liệu, API hoặc thư viện có thể không thể xác định chỉ bằng cách đọc một hàm riêng lẻ.
Cho ChatGPT kiểm tra lại bản code sau khi sửa
Sau khi có bản sửa, bạn nên thực hiện thêm một vòng kiểm tra. Đừng chỉ sao chép code mới và kết thúc quá trình debug. Hãy yêu cầu ChatGPT xem lại chính bản sửa đó để tìm những vấn đề có thể phát sinh.
Đây có thể xem là bước kiểm tra thứ hai: lần đầu tìm nguyên nhân, lần sau đánh giá tác động của thay đổi. Hai bước này giúp hạn chế trường hợp lỗi ban đầu được xử lý nhưng một lỗi khác xuất hiện do bản sửa.
Đây là phiên bản code sau khi sửa:
[đặt code ở đây]
Hãy review riêng phần thay đổi và kiểm tra:
- Có còn lỗi cú pháp không?
- Logic mới có đúng với yêu cầu ban đầu không?
- Có trường hợp dữ liệu nào chưa được xử lý không?
- Bản sửa có thể tạo ra lỗi mới ở đâu?
- Có thay đổi nào ngoài phạm vi yêu cầu không?
Nếu code đã ổn, hãy giải thích ngắn gọn vì sao.
Nếu còn vấn đề, chỉ rõ vị trí và cách khắc phục.
Việc kiểm tra lại cũng giúp phát hiện những thay đổi vô tình do ChatGPT đưa vào. Đặc biệt với code dài, hãy đối chiếu bản trước và sau khi sửa thay vì chỉ nhìn vào kết quả cuối cùng.
Cách dùng ChatGPT sửa lỗi HTML và CSS
Với HTML và CSS, lỗi không phải lúc nào cũng xuất hiện dưới dạng thông báo rõ ràng. Trang web vẫn có thể tải bình thường nhưng một phần tử bị lệch, không hiển thị, không nhận CSS hoặc hoạt động khác với mong muốn.
Khi gặp trường hợp này, nên cung cấp cho ChatGPT cả HTML và CSS có liên quan. Nếu chỉ gửi CSS, hệ thống có thể không biết selector đang tác động đến phần tử nào. Ngược lại, nếu chỉ gửi HTML, nguyên nhân có thể nằm trong CSS.
Nên mô tả cụ thể hiện tượng đang xảy ra, chẳng hạn phần tử đáng lẽ nằm ngang nhưng lại xuống dòng, khoảng cách không đúng, màu không thay đổi hoặc một quy tắc CSS không có tác dụng.
Đây là HTML và CSS của một phần giao diện.
Vấn đề:
- Tôi muốn các phần tử nằm cùng một hàng.
- Hiện tại phần tử thứ hai bị xuống dòng.
- Không muốn thay đổi cấu trúc HTML nếu không cần.
Hãy:
1. Xác định quy tắc CSS gây ra vấn đề.
2. Giải thích nguyên nhân.
3. Đưa ra bản sửa tối thiểu.
4. Không thêm CSS không liên quan.
Nếu CSS có nhiều selector, bạn cũng có thể yêu cầu ChatGPT kiểm tra thứ tự ưu tiên, độ đặc hiệu của selector, thuộc tính kế thừa và những quy tắc có thể ghi đè lẫn nhau.
Cách dùng ChatGPT tìm lỗi JavaScript
JavaScript thường có những lỗi khó nhận biết vì một thao tác trên giao diện có thể kích hoạt nhiều hàm liên tiếp. Một lỗi ở dữ liệu ban đầu có thể chỉ được phát hiện sau khi chương trình thực hiện thêm nhiều bước.
Khi gửi lỗi JavaScript, nên cung cấp cả thông báo trong Console và đoạn code thực hiện thao tác gây lỗi. Nếu có sự kiện như click, submit hoặc change, hãy cho biết chính xác thao tác nào làm lỗi xuất hiện.
Đây là đoạn JavaScript xử lý sự kiện click.
Khi nhấn nút, tôi nhận được lỗi:
[thông báo lỗi]
Mong muốn:
- Khi nhấn nút, lấy giá trị từ input.
- Gửi giá trị đó đến hàm xử lý.
- Hiển thị kết quả lên phần tử có id="result".
Hãy xác định nguyên nhân trước, sau đó đưa ra bản sửa tối thiểu.
Không thay đổi cách tổ chức code nếu không cần.
Nếu JavaScript nhận dữ liệu từ AJAX hoặc API, nên cung cấp thêm cấu trúc dữ liệu thực tế mà server trả về. Một đoạn code có thể hoàn toàn hợp lý nếu response là một đối tượng, nhưng sẽ lỗi nếu server thực tế trả về chuỗi hoặc một cấu trúc JSON khác.
Cách dùng ChatGPT sửa lỗi PHP
Với PHP, lỗi có thể nằm ở cú pháp, biến, session, xử lý form, truy vấn cơ sở dữ liệu, dữ liệu nhận từ request hoặc sự khác biệt giữa các phiên bản PHP.
Khi gặp lỗi PHP, thông báo lỗi đầy đủ thường là dữ liệu rất quan trọng. Nếu hệ thống báo tên file và số dòng, hãy gửi nguyên văn thông báo đó cùng đoạn code xung quanh vị trí được báo.
PHP báo lỗi sau:
[thông báo lỗi đầy đủ]
Đây là đoạn code liên quan:
[đặt code PHP ở đây]
Thông tin môi trường:
PHP: [phiên bản nếu biết]
Kết quả mong muốn:
[mô tả kết quả]
Hãy:
- Xác định nguyên nhân.
- Giải thích lỗi bằng cách dễ hiểu.
- Đưa ra bản sửa ít thay đổi nhất.
- Cho biết bản sửa có phụ thuộc phiên bản PHP hay không.
Với lỗi PHP liên quan dữ liệu từ biểu mẫu, cần cho biết tên các trường được gửi lên. Một lỗi có thể xuất hiện vì tên input trong HTML không trùng với khóa mà PHP đang đọc, chứ không phải do câu lệnh xử lý phía PHP bị sai.
Cách dùng ChatGPT kiểm tra lỗi SQL và cơ sở dữ liệu
Lỗi SQL cần được phân tích dựa trên cả câu truy vấn và cấu trúc dữ liệu. Một câu lệnh có thể đúng về cú pháp nhưng vẫn không trả về kết quả vì tên bảng, tên cột, kiểu dữ liệu hoặc điều kiện lọc không phù hợp.
Khi gửi SQL, nên cung cấp câu truy vấn, thông báo lỗi và cấu trúc bảng liên quan. Không cần cung cấp dữ liệu thật nếu dữ liệu đó chứa thông tin riêng tư; có thể thay bằng dữ liệu mẫu nhưng vẫn giữ đúng kiểu dữ liệu.
Đây là câu SQL:
[đặt câu SQL ở đây]
Cấu trúc bảng liên quan:
users
- id: integer
- name: varchar
- email: varchar
- created_at: datetime
Lỗi nhận được:
[thông báo lỗi]
Mục tiêu:
Tìm người dùng theo email và trả về tên.
Hãy kiểm tra:
- Cú pháp SQL.
- Tên bảng và tên cột.
- Kiểu dữ liệu.
- Điều kiện WHERE.
- Những trường hợp có thể khiến truy vấn không trả về kết quả.
Nếu ChatGPT đề xuất thay đổi truy vấn, hãy yêu cầu giải thích vì sao truy vấn cũ không đạt được mục tiêu. Điều này giúp bạn phân biệt giữa sửa lỗi thực sự và việc thay đổi truy vấn chỉ để có một kết quả khác.
Cách dùng ChatGPT tìm lỗi khi API không trả dữ liệu đúng
Đối với API, lỗi có thể nằm ở cả phía gửi request và phía server trả response. Vì vậy, chỉ nhìn vào đoạn code gọi API chưa chắc đủ để xác định nguyên nhân.
Thông tin hữu ích gồm URL hoặc endpoint ở dạng an toàn, phương thức HTTP, dữ liệu gửi đi, mã trạng thái HTTP, response nhận được và kết quả mong muốn. Những thông tin xác thực như token hoặc API key không nên gửi nguyên giá trị.
Tôi gọi một API bằng phương thức POST.
Dữ liệu gửi:
{
"name": "Nguyen Van A",
"email": "example@example.com"
}
Mã trạng thái nhận được:
[HTTP status]
Response:
[dữ liệu response]
Mong muốn:
API tạo thành công người dùng và trả về id.
Hãy phân tích riêng:
1. Request có vấn đề gì không?
2. Response cho biết điều gì?
3. Lỗi có khả năng nằm ở client hay server?
4. Cần kiểm tra thêm thông tin nào để xác định chính xác?
Nếu API trả về JSON, hãy gửi response thực tế thay vì chỉ nói “API không hoạt động”. Cấu trúc response thường là manh mối quan trọng để xác định chương trình đang đọc sai trường dữ liệu hay server thực sự trả về lỗi.
Cách yêu cầu ChatGPT tìm lỗi trong code nhiều file
Khi một lỗi liên quan đến nhiều file, hãy cho ChatGPT biết vai trò của từng file. Ví dụ một file nhận request, một file xử lý nghiệp vụ, một file truy vấn cơ sở dữ liệu và một file trả kết quả.
Việc mô tả luồng này giúp tránh tình trạng ChatGPT phân tích từng file riêng biệt mà không nhận ra dữ liệu được truyền từ file này sang file khác.
Luồng xử lý của chức năng:
form.html
→ gửi dữ liệu đến process.php
→ process.php gọi User.php
→ User.php truy vấn database
→ process.php trả JSON về JavaScript
Lỗi xuất hiện khi gửi form:
[thông báo lỗi]
Tôi sẽ cung cấp các file liên quan bên dưới.
Hãy theo dõi dữ liệu từ đầu đến cuối.
Không sửa từng file một cách độc lập.
Hãy xác định vị trí đầu tiên mà dữ liệu trở nên sai,
sau đó đề xuất bản sửa.
Đây là cách tiếp cận phù hợp với những lỗi phát sinh do dữ liệu bị thay đổi trong quá trình truyền qua nhiều tầng. Điểm quan trọng là tìm nơi dữ liệu bắt đầu sai thay vì chỉ sửa nơi lỗi cuối cùng được phát hiện.
Không nên tin ngay mọi đoạn code do ChatGPT đề xuất
ChatGPT có thể tạo ra một bản sửa hợp lý về mặt cú pháp nhưng không phù hợp với kiến trúc hoặc yêu cầu thực tế của dự án. Vì vậy, code do AI đề xuất vẫn cần được kiểm tra trước khi đưa vào hệ thống.
Đặc biệt, nếu câu trả lời sử dụng một hàm, thư viện hoặc API mà bạn chưa từng dùng, hãy kiểm tra tài liệu kỹ thuật tương ứng và thử nghiệm trong môi trường phù hợp. Không nên xem việc ChatGPT đưa ra một đoạn code là bằng chứng rằng đoạn code đó chắc chắn đúng.
Với code quan trọng, nên kiểm tra ít nhất các điểm sau:
- Code có đúng với phiên bản ngôn ngữ và thư viện đang sử dụng không?
- Bản sửa có thay đổi hành vi của những chức năng khác không?
- Các trường hợp dữ liệu rỗng hoặc bất thường đã được xử lý chưa?
- Có làm lộ thông tin nhạy cảm hoặc tạo ra vấn đề bảo mật không?
- Code có thực sự giải quyết lỗi ban đầu hay chỉ làm biến mất thông báo lỗi?
Quy trình dùng ChatGPT sửa lỗi code hiệu quả
Thay vì hỏi ChatGPT nhiều câu rời rạc, bạn có thể áp dụng một quy trình cố định cho hầu hết các lỗi lập trình. Quy trình này giúp cuộc trao đổi có cấu trúc và dễ kiểm tra hơn.
- Xác định hiện tượng: ghi lại chính xác điều đang xảy ra.
- Thu thập lỗi: lấy thông báo lỗi, mã trạng thái hoặc kết quả thực tế.
- Khoanh vùng: xác định file, hàm hoặc thành phần liên quan.
- Cung cấp ngữ cảnh: gửi code, dữ liệu mẫu và môi trường cần thiết.
- Yêu cầu phân tích: tìm nguyên nhân trước khi viết bản sửa.
- Yêu cầu sửa tối thiểu: chỉ thay đổi phần cần thiết.
- Kiểm tra dữ liệu: thử với trường hợp bình thường và trường hợp biên.
- Review lại: kiểm tra xem bản sửa có tạo ra lỗi mới không.
- Kiểm thử thực tế: chạy code trong môi trường của dự án trước khi triển khai.
Điểm quan trọng nhất trong quy trình này là không coi việc nhận được một đoạn code mới là kết thúc. Debug là quá trình xác định nguyên nhân, sửa đổi có kiểm soát và kiểm chứng kết quả.
Mẫu câu lệnh dùng ChatGPT sửa lỗi code
Nếu thường xuyên debug bằng ChatGPT, bạn có thể sử dụng một mẫu yêu cầu chung rồi thay đổi phần thông tin cụ thể theo từng dự án.
Tôi đang gặp lỗi trong đoạn code dưới đây.
Ngôn ngữ:
[ngôn ngữ và phiên bản nếu biết]
Môi trường:
[môi trường/framework/thư viện nếu liên quan]
Mục đích của code:
[mô tả chức năng]
Hiện tượng:
[mô tả lỗi]
Thông báo lỗi:
[thông báo lỗi nguyên văn]
Kết quả hiện tại:
[kết quả thực tế]
Kết quả mong muốn:
[kết quả cần đạt]
Code:
[đặt code ở đây]
Hãy thực hiện theo thứ tự:
1. Xác định nguyên nhân có khả năng cao nhất.
2. Giải thích nguyên nhân bằng ngôn ngữ dễ hiểu.
3. Chỉ ra đoạn code gây ra vấn đề.
4. Nếu chưa đủ thông tin, hãy nói rõ cần thêm gì.
5. Đề xuất bản sửa tối thiểu.
6. Giải thích từng thay đổi.
7. Kiểm tra các trường hợp có thể phát sinh lỗi sau khi sửa.
8. Không tự ý thay đổi những phần không liên quan.
Mẫu này có thể dùng làm điểm bắt đầu cho nhiều tình huống khác nhau. Tuy nhiên, với lỗi phức tạp, bạn vẫn nên bổ sung dữ liệu thực tế thay vì chỉ dựa vào một câu lệnh chung.
Những lỗi thường gặp khi nhờ ChatGPT sửa code
- Chỉ gửi câu “sửa giúp tôi”: thiếu mục tiêu và ngữ cảnh nên khó xác định vấn đề.
- Không gửi thông báo lỗi: bỏ qua một trong những dữ liệu quan trọng nhất để debug.
- Gửi code nhưng không nói kết quả mong muốn: ChatGPT không có cơ sở để biết thế nào là kết quả đúng.
- Gửi quá ít code: có thể làm mất phần tạo ra nguyên nhân.
- Gửi quá nhiều code không liên quan: khiến vấn đề chính bị che khuất.
- Sao chép bản sửa ngay vào website: có thể tạo lỗi mới nếu chưa kiểm thử.
- Không cập nhật code sau mỗi lần sửa: khiến những lần phân tích tiếp theo dựa trên trạng thái cũ.
- Không kiểm tra phiên bản: một cú pháp hoặc hàm có thể khác giữa các phiên bản.
Cách dùng ChatGPT như một trợ lý debug thay vì công cụ chép code
Giá trị lớn của ChatGPT trong quá trình sửa lỗi không chỉ nằm ở việc tạo ra một đoạn code khác. Bạn có thể sử dụng nó để đặt câu hỏi ngược lại về chương trình: dữ liệu đi đâu, điều kiện nào được thực hiện, biến thay đổi ở đâu và tại sao kết quả cuối cùng không giống mong muốn.
Khi gặp lỗi, hãy cố gắng duy trì một chuỗi phân tích rõ ràng: hiện tượng → nguyên nhân → bản sửa → kiểm thử. Nếu bỏ qua bước nguyên nhân và kiểm thử, bạn dễ rơi vào vòng lặp sao chép một bản sửa, gặp lỗi mới rồi tiếp tục nhờ AI sửa tiếp.
Ngược lại, nếu yêu cầu ChatGPT giải thích và kiểm chứng từng bước, bạn vừa có thể xử lý lỗi trước mắt vừa hiểu rõ hơn về đoạn code đang làm việc. Đây là cách sử dụng AI phù hợp hơn với việc học lập trình và bảo trì những dự án có nhiều chức năng.
Kết luận
ChatGPT có thể hỗ trợ đáng kể trong việc sửa lỗi code nếu được cung cấp đúng thông tin và được yêu cầu phân tích có trình tự. Thay vì chỉ gửi một đoạn code rồi yêu cầu viết lại, hãy cung cấp thông báo lỗi, kết quả thực tế, kết quả mong muốn và ngữ cảnh cần thiết.
Với lỗi đơn giản, ChatGPT có thể giúp xác định nhanh vị trí sai và đưa ra cách sửa. Với lỗi phức tạp, cách hiệu quả hơn là sử dụng ChatGPT để phân tích luồng dữ liệu, đưa ra các giả thuyết, xác định thông tin cần kiểm tra rồi mới thay đổi code.
Quan trọng nhất, bản code do ChatGPT đề xuất vẫn cần được kiểm tra và chạy thử trong môi trường thực tế. Khi kết hợp AI với quy trình phân tích nguyên nhân, sửa tối thiểu và kiểm thử, việc debug sẽ có hệ thống hơn và bạn cũng dễ hiểu được vì sao lỗi xảy ra thay vì chỉ tìm cách làm cho thông báo lỗi biến mất.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *