Bỏ qua, tới nội dung chính
BaoPeak

Script báo lỗi: dán nguyên văn cho AI và vòng sửa

Kết quả sai không phải lúc nào cũng có ô đỏ. Dán nguyên văn thông báo và số kỳ vọng cho AI, sửa từng vòng tới khi đúng.

Cần máy tínhTài khoản công cụ: 18+Công cụ miễn phí

Kiểm tra lần cuối: 26/9/2026.

Sau bài này bạn sẽ: nhận ra một kết quả sai dù không có lỗi đỏ, dán nguyên văn cho AI, và tự chạy lại tới khi khớp số kỳ vọng — kể cả khi phải sửa hai vòng

⏱ khoảng 18 phút (đã tính thời gian chuyển qua lại giữa các app) · 💻 Cần máy tính (không có bản trên điện thoại) · Tài khoản công cụ AI: 18+ · Kiểm tra lần cuối: 26/9/2026

Vì sao quan trọng

Minh chỉ tay vào một khối chữ màu đỏ cam trên màn hình laptop, chuẩn bị bôi đen để copy
Ô đỏ không phải bạn dốt — đó là tin nhắn máy gửi cho bạn, dán nguyên văn cho AI đọc hộ. · Nguồn: nhân vật minh họa, do AI vẽ — không phải người thật

Bạn nghĩ script hỏng là phải có chữ Error to đùng, màu đỏ, chương trình dừng lại. Không phải lúc nào cũng vậy. Cách hỏng nguy hiểm nhất là loại không có ô đỏ: chương trình vẫn chạy xong, vẫn in ra "THÀNH CÔNG", chỉ có một dòng cảnh báo nhỏ dễ lướt qua — và con số cuối cùng thì sai.

Hai kiểu “hỏng” khác hẳn nhau

Ô đỏ (traceback — đoạn chữ đỏ máy in ra khi tự dừng) dừng chương trình

  • Có chữ "Error" viết hoa, dễ nhận ra ngay
  • Chương trình dừng lại, bạn biết ngay có chuyện
  • Đọc từ dưới lên: loại lỗi → dòng gây lỗi → thông điệp

Kết quả sai nhưng không dừng

  • Chương trình chạy xong, vẫn in "THÀNH CÔNG"
  • Chỉ có 1 dòng cảnh báo nhỏ, rất dễ bỏ qua
  • Chỉ lộ ra khi bạn so với số kỳ vọng đã tự tính tay
Kiểu 'Ô đỏ' dễ thấy vì chương trình tự dừng. Kiểu 'Kết quả sai nhưng không dừng' nguy hiểm hơn vì bạn phải tự phát hiện.

Đây chính là lý do bài 1 luôn nhắc bạn tự tính số kỳ vọng trước khi chạy. Không có số đó, bạn sẽ không bao giờ biết dòng cảnh báo nhỏ kia đang giấu một tuần quỹ bị bỏ sót.

Thử ngay — dán nguyên văn, không diễn giải lại

Câu kiểm tra

Script chạy xong, in “[THÀNH CÔNG] Đã tạo file báo cáo...”, nhưng bạn thấy có 1 dòng “[CẢNH BÁO] File 'tuan-4.csv' thiếu cột bắt buộc. Đã bỏ qua.” phía trên. Đây có phải lỗi cần xử lý không?

Minh chạy script (đã qua bài an toàn) thật trên 4 file CSV của tháng 9. Kết quả: script bỏ qua đúng file tuan-4.csv, tổng chỉ ra bằng 3 tuần thay vì 4 — sai với số kỳ vọng anh tự tính trước.

▶ Thử ngay

Copy nguyên văn toàn bộ phần in ra màn hình (không tóm tắt lại "nó báo lỗi gì đó"), dán cho AI trong một đoạn chat mới kèm số kỳ vọng. Chép cả khung dưới đây → dán vào ô chat của AI → xóa dòng [dán nguyên văn cả script tong_hop_quy.py của bạn] ngay trong khung chat và dán đúng script thật của bạn vào đúng chỗ đó → rồi mới bấm gửi. Khung này chỉ để đọc và chép, không tự mở app hay tự gửi thay bạn.

Câu lệnh để dán vào AI

Tôi có script Python sau (dán nguyên văn):
"""
[dán nguyên văn cả script tong_hop_quy.py của bạn]
"""

Tôi chạy nó trên thư mục input có 4 file (tuan-1.csv đến tuan-4.csv, mỗi file 5 dòng dữ liệu) và gặp kết quả in ra như sau (dán nguyên văn):
"""
--- BẮT ĐẦU XỬ LÝ CÁC FILE CSV ---
- Đã xử lý xong file 'tuan-1.csv': 5 dòng.
- Đã xử lý xong file 'tuan-2.csv': 5 dòng.
- Đã xử lý xong file 'tuan-3.csv': 5 dòng.
[CẢNH BÁO] File 'tuan-4.csv' thiếu cột bắt buộc. Đã bỏ qua file này.
… TỔNG CỘNG TOÀN QUỸ: 280.000 VNĐ
"""

Tôi kỳ vọng 4 file × 5 dòng = 20 dòng được xử lý, và tổng quỹ phải khác 280.000 VNĐ ở trên (cộng thêm phần của tuần 4), nhưng chương trình báo bỏ qua file tuan-4.csv. Tôi đã mở file tuan-4.csv bằng Notepad và thấy dòng tiêu đề nhìn qua giống hệt 3 file kia.

Hãy giải thích bằng 1 câu dễ hiểu vì sao chương trình lại bỏ qua đúng file này, rồi sửa script để nó vẫn xử lý đúng file tuan-4.csv (và mọi file tương tự sau này), chỉ đưa lại phần code cần thay đổi, không đưa lại toàn bộ script.

Màn hình Gemini giải thích nguyên nhân cột bị thừa khoảng trắng — đoạn code sửa bằng .strip() đọc ở khối chữ bên dưới
Gemini · chụp ngày 26/9/2026 — giao diện có thể đã đổi
▶ Dán nguyên văn kết quả sai, nhận giải thích và bản sửa vòng 1 · quay màn hình thật trên Gemini, ngày 26/9/2026 — clip không có tiếng, giao diện có thể đã đổi
  1. Dán script, kết quả in ra, và số kỳ vọng vào một đoạn chat mới
  2. Gemini chỉ đúng nguyên nhân: tiêu đề cột thừa một dấu cách
  3. Gemini đưa phần code cần sửa, không viết lại cả script
Xem cả hai vòng sửa thật — vòng 1 chưa xong, vòng 2 mới đúng

Kết quả của bạn khác là bình thường. Hãy so 3 điểm dưới đây, không so từng chữ.

Chạy thật ngày 26/9/2026 trên Gemini bản miễn phí, trình duyệt không đăng nhập.

Vòng 1 — Gemini trả lời:

Nguyên nhân chương trình bỏ qua file tuan-4.csv là do dòng tiêu đề của file này có một khoảng trắng thừa ở cột "Số tiền " (REQUIRED_COLUMNS yêu cầu chính xác là "Số tiền"). Để sửa lỗi này… bạn hãy thay thế đoạn code kiểm tra cột ở Bước 2 bằng cách dùng hàm .strip() cho từng tiêu đề cột:

file_columns = [col.strip() for col in reader.fieldnames] if reader.fieldnames else []
if not all(col in file_columns for col in REQUIRED_COLUMNS):

Nghe rất hợp lý — Minh dán đúng phần này vào script, chạy lại. Kết quả:

- Đã xử lý xong file 'tuan-1.csv': 5 dòng.
- Đã xử lý xong file 'tuan-2.csv': 5 dòng.
- Đã xử lý xong file 'tuan-3.csv': 5 dòng.
[LỖI] Không thể đọc file 'tuan-4.csv' do lỗi: 'Số tiền'. Đã bỏ qua.
… TỔNG CỘNG TOÀN QUỸ: 280.000 VNĐ

Vẫn sai — chỉ đổi từ dòng [CẢNH BÁO] sang dòng [LỖI], tổng vẫn y hệt. Đây chính là lúc dán tiếp, không phải bỏ cuộc hay mở chat khác nói lại từ đầu.

Vòng 2 — dán nguyên văn kết quả mới cùng script đã sửa vòng 1, hỏi vì sao vẫn chưa đủ. Gemini trả lời:

Việc sửa đoạn kiểm tra chỉ giúp file vượt qua bước lọc ban đầu, nhưng đối tượng DictReader vẫn sử dụng tiêu đề gốc (có chứa dấu cách thừa) làm khóa (key) của dictionary, dẫn đến lỗi khi truy xuất row["Số tiền"]. […]

for row in reader:
  row = {k.strip(): v for k, v in row.items()}  # Chuẩn hóa key để loại bỏ khoảng trắng thừa
  row_count += 1
  member = row["Thành viên"].strip()

("Khóa của dictionary" — dictionary là kiểu dữ liệu Python lưu theo cặp tên–giá trị, ví dụ {"Số tiền": 20000}; "Số tiền" ở đó gọi là khóa (key). Cột thừa dấu cách làm khóa không khớp tên script tìm.)

Áp bản sửa này, chạy lại lần ba:

- Đã xử lý xong file 'tuan-1.csv': 5 dòng.
- Đã xử lý xong file 'tuan-2.csv': 5 dòng.
- Đã xử lý xong file 'tuan-3.csv': 5 dòng.
- Đã xử lý xong file 'tuan-4.csv': 5 dòng.
… TỔNG CỘNG TOÀN QUỸ: 360.000 VNĐ

Đủ 4 tuần, đúng số kỳ vọng — và thư mục input/ vẫn còn nguyên 4 file gốc, không file nào bị sửa hay xóa.

So 3 điểm:

  1. Vòng 1: Gemini chỉ đúng nguyên nhân (cột thừa dấu cách), nhưng bản sửa chỉ chạm phần kiểm cột, chưa chạm phần đọc dữ liệu — chạy lại vẫn sai.
  2. Vòng 2: dán tiếp lỗi mới trong cùng đoạn chat, Gemini chỉ đúng chỗ còn thiếu và sửa cho khớp.
  3. Sau vòng 2, chạy lại ra đúng số kỳ vọng (đủ 4 tuần), và 4 file gốc trong input vẫn còn nguyên.

Áp bản sửa vào file — cách làm chung

Mỗi khi AI đưa một đoạn code cần thay

  1. Mở file .py bằng Notepad (Windows) hoặc TextEdit ở chế độ Plain Text (Mac) — chương trình bài 1 đã dùng để lưu script.
  2. Tìm đúng đoạn code cũ mà AI vừa nói cần thay (Ctrl+F trên Windows, Cmd+F trên Mac để tìm nhanh một cụm chữ trong đoạn cũ).
  3. Bôi đen đúng đoạn cũ đó, xóa, dán đoạn AI vừa đưa vào đúng chỗ — giữ nguyên số dấu cách/khoảng trắng ở đầu mỗi dòng như đoạn cũ (Python dùng khoảng trắng đầu dòng để biết dòng nào thuộc khối nào; lệch một dấu cách là báo lỗi).
  4. Không chắc lắp đúng chỗ → xin AI "đưa lại toàn bộ script đã sửa" rồi thay nguyên cả file, an toàn hơn ghép tay từng đoạn.
  5. Lưu file (Ctrl+S / Cmd+S), rồi chạy lại đúng lệnh đã dùng ở bài 1 (python hoặc python3 tong_hop_quy.py).

Kết quả khác dự kiến?

Dán lỗi mà chưa xong — bình thường, đi tiếp đúng cách

  1. AI sửa nhưng đưa lại nguyên cả script dài → bạn phải thay cả file, đừng ghép nửa cũ nửa mới kẻo hỏng chỗ khác.
  2. Sửa vòng 1 xong vẫn ra lỗi khác ở đúng chỗ cũ → dán tiếp lỗi mới trong CÙNG một việc, đừng coi là thất bại; đây là vòng lặp bình thường.
  3. Sau 2-3 vòng vẫn không xong, cuộc trò chuyện đã quá dài và lộn xộn → mở một đoạn chat mới, mô tả lại từ đầu bằng đơn đặt hàng bốn phần và dán script hiện tại.
  4. Kết quả không phải ô đỏ mà là số sai âm thầm → dán cả kết quả in ra lẫn số kỳ vọng của bạn, đừng chỉ hỏi "sao sai vậy".

Câu kiểm tra

Câu kiểm tra

Vì sao nên dán NGUYÊN VĂN thông báo lỗi/kết quả, thay vì tự tóm tắt “nó báo lỗi gì đó về một cột”?

Câu kiểm tra

Bạn áp bản sửa AI đưa, chạy lại, vẫn ra lỗi khác ở đúng chỗ cũ. Nên làm gì tiếp theo?

Làm trên việc thật của bạn

Lần tới script của bạn ra kết quả sai — dù có ô đỏ hay chỉ là con số lệch — dùng khung này trong một đoạn chat mới (hoặc chat đang có script, nếu chưa quá dài). Nếu phần in ra có tên người thật (như ví dụ Huy, Lan, Mai ở trên): thay từng tên bằng [TV1], [TV2]… trước khi dán (bài 9 lộ trình LÕI — Ẩn danh trước khi dán); giữ nguyên tên file, tên cột và thông báo lỗi để AI vẫn chẩn đoán đúng.

Câu lệnh để dán vào AI

Tôi có script sau (dán nguyên văn): [dán script hiện tại]

Tôi chạy nó và gặp kết quả sau (dán NGUYÊN VĂN, không tóm tắt): [dán toàn bộ phần in ra hoặc thông báo lỗi]

Tôi kỳ vọng: [con số hoặc kết quả bạn tự tính trước]. Hãy giải thích 1 câu vì sao ra như vậy, rồi sửa — chỉ đưa phần code cần thay đổi, không viết lại toàn bộ script.

Áp bản sửa, chạy lại, so với số kỳ vọng. Chưa khớp thì dán tiếp — đừng ngại lặp lại hai, ba vòng.

Tự chấm

Tự chấm — tick khi bạn chỉ ra được dòng nào trong bài của mình đạt

Tóm lại

  • Kết quả sai nguy hiểm nhất là loại không có ô đỏ — chương trình vẫn báo thành công, chỉ có một dòng cảnh báo nhỏ.
  • Dán nguyên văn kết quả/lỗi kèm số kỳ vọng — đừng tự tóm tắt, vì đúng chi tiết nhỏ mới là đầu mối để AI chẩn đoán đúng.
  • Sửa một vòng chưa chắc đã xong — dán tiếp lỗi mới trong cùng việc là bình thường, không phải thất bại.
Bài tiếp theo →Bài 4 — Tự động hóa có điểm duyệt: việc nào cho máy, chỗ nào bạn bấm duyệt

Tên và giao diện sản phẩm thuộc về chủ sở hữu tương ứng. BaoPeak không liên kết, không được tài trợ bởi các công ty này.

Trong bài này