AILapTrinh.comAI Lập Trình
Gỡ lỗi cùng AI

Hỏi AI sửa lỗi code thế nào cho trúng: mẫu báo lỗi sáu phần dùng được ngay

Cách đưa lỗi cho trợ lý AI để nó chẩn đoán đúng: lỗi nguyên văn, mã tối thiểu, bước tái hiện, môi trường, điều đã thử và câu lệnh mẫu.

Young developer at a shared desk in a Hanoi coworking space, laptop screen blank, notebook with hand-drawn boxes beside iced coffee, seen from behind, morning window light

Muốn AI sửa lỗi trúng, bạn phải đưa cho nó đúng những thứ mà một đồng nghiệp giỏi sẽ hỏi trước khi chạm vào mã: lỗi nguyên văn, đoạn mã liên quan, cách làm lỗi xuất hiện lại, môi trường chạy, kết quả mong đợi và những gì bạn đã thử. Thiếu một trong sáu thứ đó, trợ lý vẫn trả lời rất tự tin, nhưng là trả lời cho một lỗi do nó tự hình dung ra.

Bài này dành cho người đang quen dán một dòng kiểu “sao đoạn này lỗi” vào khung chat rồi nhận về ba cách sửa mà không cách nào chạy. Bạn sẽ có một mẫu báo lỗi sáu phần chép ra dùng ngay, cách rút mã về bản nhỏ nhất, cách che khoá và dữ liệu thật trước khi dán, và cách đọc câu trả lời của AI như đọc một giả thuyết cần kiểm, không phải một lời phán.

Vì sao chỉ dán dòng báo lỗi thì AI hay đoán trật

Trợ lý trong khung chat không chạy được mã của bạn, không thấy tệp cấu hình, không biết bạn đang dùng phiên bản thư viện nào. Ngay cả tác tử có quyền chạy lệnh trên máy cũng chỉ biết những gì nó đã đọc được. Phần còn thiếu, mô hình lấp bằng trường hợp phổ biến nhất mà nó từng gặp trong dữ liệu học. Với lỗi phổ biến, cách lấp này hay trúng; với lỗi nằm ở chỗ đặc thù của dự án bạn, nó trật mà câu chữ vẫn trơn tru như thật.

Lấy một ví dụ giả định trong Python: dòng KeyError: 'email'. Chỉ riêng dòng này có ít nhất bốn nguyên nhân khác nhau: dữ liệu vào thiếu trường, tên khoá viết hoa khác nhau giữa hai nơi, dịch vụ bên ngoài vừa đổi định dạng trả về, hoặc đọc nhầm sang một biến khác cùng tên. Câu trả lời hay gặp nhất là đổi sang dùng phương thức get để lấy giá trị mặc định. Lỗi biến mất trên màn hình, nhưng một địa chỉ thư rỗng lặng lẽ chảy xuống các bước sau, tới lúc gửi thư mới hỏng, khi đó lần ngược khó hơn nhiều.

Vì vậy, việc đầu tiên của gỡ lỗi cùng AI không phải là chọn công cụ nào thông minh hơn, mà là quyết định cho nó xem gì. Thông tin bạn đưa vào xác định AI đang giải bài toán nào. Càng ít bối cảnh, nó càng giải bài toán phổ biến của số đông thay vì bài toán của chính bạn.

Mẫu báo lỗi sáu phần

Bảng dưới là khung bạn có thể chép vào một tệp ghi chú để mỗi lần cần hỏi thì điền vào. Cột ví dụ là ví dụ giả định cho một đoạn mã đọc tệp đơn hàng.

PhầnCần có gìVí dụ giả định
1. Mục tiêuĐoạn mã định làm việc gì, cho ai dùngHàm đọc tệp CSV đơn hàng và cộng tổng tiền theo ngày để in báo cáo cuối ca
2. Lỗi nguyên vănToàn bộ thông báo lỗi và ngăn xếp lời gọi, dán từ terminal hoặc nhật ký, không gõ lại bằng tayKhối traceback đầy đủ, kể cả dòng cuối nêu loại lỗi
3. Mã tối thiểuHàm gây lỗi, chỗ gọi nó, phần nhập thư viện; bỏ những gì không liên quanKhoảng 30 dòng thay vì cả tệp 800 dòng
4. Cách tái hiệnCác bước và dữ liệu vào mẫu khiến lỗi xảy ra mỗi lầnChạy tệp với ba dòng dữ liệu mẫu, dòng thứ ba có ô ngày để trống
5. Môi trườngHệ điều hành, phiên bản ngôn ngữ, phiên bản thư viện chính, chạy ở máy mình hay máy chủPython 3.11, pandas bản 2, Ubuntu trên máy chủ thuê
6. Đã thử gìNhững gì đã kiểm và kết quả thật, kể cả giả thuyết đã loạiĐã in kiểu dữ liệu của cột ngày: là chuỗi, không phải ngày; đã thử bỏ dòng trống thì hết lỗi

Ngoài sáu phần, thêm một câu “mong đợi thế này, thực tế thế kia”. Câu ngắn này giúp AI phân biệt lỗi làm chương trình dừng với lỗi chương trình chạy êm mà ra kết quả sai, hai loại cần hai cách điều tra khác nhau.

Phần thứ sáu hay bị bỏ nhất mà lại đáng giá nhất. Không nói đã thử gì, AI sẽ đề nghị đúng những việc bạn làm từ nửa tiếng trước, và cuộc trò chuyện quay vòng ngay từ lượt thứ hai.

Rút mã về bản nhỏ nhất vẫn còn lỗi

Dán cả tệp dài vào khung chat vừa tốn ngữ cảnh vừa làm AI phân tán chú ý sang những chỗ không liên quan. Bản rút gọn, người trong nghề gọi là ví dụ tái hiện tối thiểu, thường tự chỉ ra nguyên nhân trước cả khi bạn kịp hỏi.

  1. Chép đoạn mã gây lỗi sang một tệp riêng, chạy lại để chắc lỗi vẫn còn ở bản chép.
  2. Thay phần đọc cơ sở dữ liệu hay gọi dịch vụ ngoài bằng một biến chứa dữ liệu mẫu cố định. Nếu lỗi mất đi, nguyên nhân nằm ở dữ liệu thật, không nằm ở đoạn xử lý.
  3. Xoá dần từng khối không liên quan, mỗi lần xoá chạy lại một lần. Còn lỗi thì xoá tiếp, mất lỗi thì đặt khối vừa xoá trở lại.
  4. Rút dữ liệu mẫu xuống ít dòng nhất vẫn còn gây lỗi, thường chỉ hai đến năm dòng.
  5. Ghi lại lệnh chạy chính xác cùng kết quả in ra, để người đọc chạy lại được y như bạn.

Bước này nghe tốn công nhưng thường chỉ mất mười lăm phút, trong khi một vòng hỏi đáp mơ hồ với AI có thể ngốn cả buổi chiều. Nếu bạn dùng tác tử có quyền chạy lệnh, có thể giao chính việc rút gọn này cho nó, kèm điều kiện rõ: chỉ làm trong một tệp mới, không sửa tệp gốc.

Che khoá, mật khẩu và dữ liệu khách trước khi dán

Khoá API và mật khẩu nằm trong nhật ký. Thông báo lỗi khi kết nối thường in ra nguyên chuỗi kết nối, trong đó có tên đăng nhập và mật khẩu cơ sở dữ liệu. Thay bằng chữ GIẤU trước khi dán, và nếu lỡ dán rồi thì coi khoá đó là đã lộ, đổi khoá mới.

Dữ liệu thật của khách trong ví dụ lỗi. Dòng dữ liệu gây lỗi có thể chứa họ tên, số điện thoại, địa chỉ. Đổi thành Khách A, số giả, địa chỉ giả nhưng giữ nguyên hình dạng: nếu lỗi do ô trống hay do ký tự có dấu thì bản giả cũng phải trống hay có dấu đúng chỗ đó.

Tên máy chủ, địa chỉ IP nội bộ, tên miền nội bộ. Những chi tiết này ít khi cần cho việc chẩn đoán. Thay bằng máy-chủ-a, máy-chủ-b là đủ để AI hiểu luồng.

Mã nguồn của công ty. Trước khi dán, xem quy định của công ty cho phép dùng công cụ nào với loại mã nào. Mã rút gọn tối thiểu ở phần trên vừa giúp gỡ lỗi vừa giảm lượng mã phải đưa ra ngoài.

Ảnh chụp màn hình. Ảnh hay vô tình lộ thanh địa chỉ, tên tài khoản, các thẻ đang mở. Dán chữ tốt hơn ảnh: AI đọc chính xác hơn, và bạn nhìn thấy hết những gì mình đang gửi đi.

Câu lệnh mẫu để giao việc gỡ lỗi

Các câu dưới đây viết để dán ngay sau phần báo lỗi sáu phần. Điểm chung là bắt AI suy luận và đề xuất cách kiểm trước, viết mã sửa sau.

  • Chẩn đoán trước: “Chưa viết mã sửa. Đọc lỗi và đoạn mã trên, liệt kê ba nguyên nhân có thể, xếp theo khả năng, mỗi nguyên nhân kèm một cách kiểm trong năm phút.”
  • Hỏi lại khi thiếu: “Nếu thông tin trên chưa đủ để kết luận, hỏi thêm tối đa ba câu trước khi đề xuất gì.”
  • Giải thích dòng lỗi: “Giải thích bằng lời thường dòng cuối của ngăn xếp lời gọi nghĩa là gì, và dòng nào trong đó thuộc mã của dự án chứ không phải của thư viện.”
  • Sửa tối thiểu: “Đề xuất thay đổi nhỏ nhất làm hết lỗi mà không đổi hành vi ở chỗ khác. Chỉ ra đúng dòng cần sửa, không viết lại cả hàm.”
  • Chặn cách sửa che lỗi: “Không dùng khối bắt lỗi để nuốt ngoại lệ, không thay bằng giá trị mặc định nếu chưa chỉ ra vì sao dữ liệu bị thiếu.”
  • Kiểm sau khi sửa: “Viết một ca kiểm thử nhỏ tái hiện đúng lỗi này, để chạy trước khi sửa thì hỏng, sau khi sửa thì qua.”

So với câu kém như “sửa giúp lỗi này” kèm một dòng báo lỗi, bộ câu trên làm cuộc trò chuyện dài hơn một lượt nhưng thường ngắn hơn cả buổi. Câu chặn cách sửa che lỗi đặc biệt hữu ích với người mới, vì đó là kiểu sửa trông giống đã xong nhất.

Đọc câu trả lời của AI như đọc một giả thuyết

Mỗi nguyên nhân AI nêu ra là một giả thuyết, chưa phải kết luận. Cách làm đúng là kiểm từng giả thuyết bằng một thao tác cụ thể: in giá trị biến ngay trước dòng lỗi, chạy lại với dữ liệu khác, đổi phiên bản thư viện trong một môi trường thử. Giả thuyết nào bị loại thì ghi lại, dán kết quả đó vào lượt hỏi tiếp theo. Cuộc trò chuyện khi ấy tiến lên chứ không đi vòng.

Có vài dấu hiệu cho thấy câu trả lời đáng ngờ. AI nhắc tới một hàm hay tham số bạn không tìm thấy trong tài liệu của thư viện: rất có thể nó đang nhớ nhầm sang thư viện khác hoặc bản cũ. AI sửa ở một tệp không hề xuất hiện trong ngăn xếp lời gọi mà không giải thích vì sao. AI khẳng định “chắc chắn là do” mà không nói căn cứ. Gặp những dấu hiệu đó, hỏi lại: căn cứ ở dòng nào của lỗi hoặc của mã.

Khi đã sửa xong, đừng dừng ở chỗ hết thấy lỗi. Chạy lại đúng các bước tái hiện, chạy bộ kiểm thử sẵn có, và đọc lại thay đổi như đọc mã của người khác gửi sang. Mã AI viết cần được đọc, chạy thử và có kiểm thử giữ lưng trước khi lên máy chủ thật, kể cả khi nó chỉ là một dòng.

Khi nào nên thôi hỏi AI và đi hỏi người

AI hữu ích nhất ở những lỗi có dấu vết rõ ràng trong thông báo và trong mã. Một số tình huống dưới đây là lúc nên chuyển sang người, hoặc ít nhất đổi cách tiếp cận.

  • Lỗi phụ thuộc vào hạ tầng chỉ người vận hành biết: cấu hình máy chủ, tường lửa, quyền thư mục, dịch vụ nội bộ của công ty.
  • Lỗi liên quan tới quy tắc nghiệp vụ: cách tính chiết khấu, quy trình duyệt, những điều chỉ người trong phòng kinh doanh hay kế toán nắm.
  • Đã qua ba vòng sửa mà lỗi chỉ đổi hình dạng chứ không hết, dấu hiệu của việc đang chữa triệu chứng.
  • Lỗi đụng tới tiền, dữ liệu khách hoặc bảo mật, nơi một cách sửa sai gây hại lớn hơn chính lỗi ban đầu.
  • Bạn không còn hiểu đoạn mã sau mấy lượt AI sửa, tức là đã mất quyền làm chủ mã của chính mình.

Khi đi hỏi người, chính bản báo lỗi sáu phần cũng dùng lại được nguyên vẹn. Người hướng dẫn hay trưởng nhóm sẽ thấy ngay bạn đã làm gì, và câu trả lời của họ thường đến nhanh hơn hẳn so với một tin nhắn chỉ có chữ “lỗi rồi anh ơi”.

Câu hỏi thường gặp

Có nên dán cả tệp mã dài vào khung chat cho AI tự tìm lỗi không?

Thường là không nên. Tệp dài tốn ngữ cảnh, làm AI phân tán sang chỗ không liên quan và tăng lượng mã đưa ra ngoài. Rút về đoạn tối thiểu vẫn còn lỗi, kèm chỗ gọi hàm và phần nhập thư viện, là đủ cho đa số trường hợp.

Dán ảnh chụp màn hình lỗi có được không?

Được, nhưng dán chữ tốt hơn. AI đọc chữ chính xác hơn đọc ảnh, bạn tìm lại trong lịch sử dễ hơn, và ảnh hay vô tình lộ tên tài khoản, thanh địa chỉ hoặc dữ liệu khác trên màn hình mà bạn không để ý.

Nếu AI đưa ra cách sửa chạy được thì có cần hiểu nó không?

Cần. Một cách sửa chạy được trên máy bạn có thể che lỗi thay vì sửa lỗi, hoặc gây hỏng ở chỗ khác. Ít nhất phải giải thích được bằng lời vì sao thay đổi đó làm hết lỗi, và có một ca kiểm thử chứng minh điều đó.

Có cần ghi phiên bản thư viện khi hỏi không?

Có, nhất là với thư viện thay đổi nhanh. Nhiều lỗi chỉ xuất hiện ở một nhánh phiên bản, và AI hay gợi ý cách dùng của bản cũ hơn. Ghi rõ phiên bản giúp nó trả lời đúng bản bạn đang chạy và giúp bạn đối chiếu với tài liệu chính thức.

Lỡ dán khoá API vào khung chat thì phải làm gì?

Coi như khoá đã lộ. Vào trang quản lý của dịch vụ để thu hồi khoá đó và tạo khoá mới, cập nhật khoá mới vào nơi lưu bí mật của dự án, sau đó xem nhật ký sử dụng của dịch vụ xem có lượt gọi lạ trong khoảng thời gian vừa qua hay không.

Câu lệnh gỡ lỗi nên viết tiếng Việt hay tiếng Anh?

Phần yêu cầu viết tiếng Việt vẫn hiệu quả với các trợ lý phổ biến hiện nay. Phần thông báo lỗi và mã thì giữ nguyên văn, không dịch, vì từ khoá trong thông báo lỗi chính là thứ AI dựa vào để nhận ra loại lỗi.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138