{"product_id":"debug-prompt-framework-xac-dịnh-va-sửa-lỗi-prompt-khong-hoạt-dộng","title":"Debug Prompt — Framework xác định và sửa lỗi prompt không hoạt động","description":"\n\u003cp\u003eBạn đã từng gặp tình huống viết prompt rất công phu nhưng Claude trả về kết quả lệch hoặc không như mong đợi? Đây là vấn đề phổ biến mà hầu hết người dùng AI gặp phải. Giống như việc debug code, debug prompt cũng cần một quy trình có hệ thống để xác định nguyên nhân gốc và sửa lỗi hiệu quả. Bài viết này trình bày một framework đầy đủ để bạn làm điều đó.\u003c\/p\u003e\n\n\u003ch2\u003eCác loại lỗi prompt thường gặp\u003c\/h2\u003e\n\u003cp\u003eTrước khi bắt tay vào debug, bạn cần nhận diện được prompt của mình đang mắc loại lỗi nào. Dưới đây là 6 loại lỗi phổ biến nhất khi làm việc với Claude.\u003c\/p\u003e\n\n\u003ch3\u003eLỗi 1: Prompt quá mơ hồ (Vagueness)\u003c\/h3\u003e\n\u003cp\u003eĐây là lỗi phổ biến nhất. Prompt không cung cấp đủ ngữ cảnh hoặc không chỉ rõ kết quả mong muốn, dẫn đến Claude phải \"đoán\" ý định của bạn.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVí dụ lỗi:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eHãy viết cho tôi một email.\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003ePrompt này thiếu thông tin về: gửi cho ai, mục đích gì, giọng điệu nào, độ dài bao nhiêu. Claude sẽ tạo một email generic không có giá trị thực tế.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eĐã sửa:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eViết email gửi cho khách hàng B2B SaaS (CTO level) để giới thiệu\ntính năng mới của sản phẩm — tính năng auto-scaling.\nGiọng điệu: chuyên nghiệp, trực tiếp, không phô trương.\nĐộ dài: 150-200 từ.\nKết thúc bằng CTA đặt lịch demo.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eLỗi 2: Chỉ dẫn mâu thuẫn (Contradictory Instructions)\u003c\/h3\u003e\n\u003cp\u003eKhi prompt chứa nhiều chỉ dẫn xung đột nhau, Claude sẽ cố gắng thỏa hiệp và kết quả thường không tốt ở bất kỳ khía cạnh nào.\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVí dụ lỗi:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eViết bài blog ngắn gọn về machine learning.\nGiải thích chi tiết mọi khái niệm.\nGiới hạn trong 200 từ.\nBao gồm tất cả các thuật toán phổ biến.\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003eỞ đây có ít nhất 3 mâu thuẫn: \"ngắn gọn\" vs \"giải thích chi tiết\", \"200 từ\" vs \"tất cả thuật toán phổ biến\", và việc giải thích chi tiết mọi khái niệm trong 200 từ là bất khả thi.\u003c\/p\u003e\n\n\u003ch3\u003eLỗi 3: Sai format đầu ra (Wrong Output Format)\u003c\/h3\u003e\n\u003cp\u003eBạn muốn kết quả dạng bảng nhưng không chỉ rõ, hoặc yêu cầu format mà Claude không thể tạo trực tiếp (ví dụ: file Excel, hình ảnh).\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eVí dụ lỗi:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003ePhân tích dữ liệu bán hàng và tạo biểu đồ.\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003e\u003cstrong\u003eĐã sửa:\u003c\/strong\u003e\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003ePhân tích dữ liệu bán hàng dưới đây và trình bày kết quả theo:\n1. Bảng tổng hợp theo tháng (Markdown table)\n2. Nhận xét xu hướng tăng\/giảm\n3. Code Python dùng matplotlib để tạo biểu đồ bar chart\n\nDữ liệu:\n[Dán dữ liệu ở đây]\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eLỗi 4: Quá tải ngữ cảnh (Context Overload)\u003c\/h3\u003e\n\u003cp\u003eĐưa quá nhiều thông tin vào prompt khiến Claude bị \"lạc\" và không biết đâu là trọng tâm. Đặc biệt nghiêm trọng khi copy-paste nguyên văn tài liệu dài mà không highlight phần quan trọng. Giải pháp là tóm tắt ngữ cảnh, chỉ giữ lại phần liên quan trực tiếp đến câu hỏi, và đánh dấu rõ phần nào Claude cần tập trung.\u003c\/p\u003e\n\n\u003ch3\u003eLỗi 5: Thiếu ví dụ mẫu (Missing Examples)\u003c\/h3\u003e\n\u003cp\u003eĐối với các tác vụ phức tạp hoặc có tính chủ quan (viết sáng tạo, đánh giá chất lượng), việc không cung cấp ví dụ mẫu khiến Claude không biết \"chuẩn\" của bạn là gì. Kỹ thuật few-shot prompting — cung cấp 2-3 ví dụ input\/output mẫu — thường giải quyết vấn đề này ngay lập tức.\u003c\/p\u003e\n\n\u003ch3\u003eLỗi 6: Giả định sai về khả năng của model (Capability Mismatch)\u003c\/h3\u003e\n\u003cp\u003eYêu cầu Claude làm những việc vượt quá khả năng hiện tại — truy cập URL thời gian thực, thực thi code, hoặc nhớ thông tin từ phiên trước. Đây không phải lỗi prompt mà là lỗi kỳ vọng. Cần hiểu rõ ranh giới khả năng của model trước khi thiết kế prompt.\u003c\/p\u003e\n\n\u003ch2\u003eFramework 5 bước debug prompt\u003c\/h2\u003e\n\u003cp\u003eSau khi hiểu các loại lỗi, đây là quy trình có hệ thống để debug bất kỳ prompt nào không hoạt động.\u003c\/p\u003e\n\n\u003ch3\u003eBước 1: Reproduce — Tái tạo vấn đề\u003c\/h3\u003e\n\u003cp\u003eChạy lại prompt ít nhất 3 lần để xác nhận vấn đề có tính hệ thống hay chỉ là do randomness của model. Ghi lại chính xác input và output mỗi lần.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eTôi đã chạy prompt này 3 lần và nhận kết quả như sau:\n\nPrompt: [Dán prompt gốc]\n\nLần 1: [Kết quả lần 1 — tóm tắt vấn đề]\nLần 2: [Kết quả lần 2 — tóm tắt vấn đề]\nLần 3: [Kết quả lần 3 — tóm tắt vấn đề]\n\nVấn đề lặp lại: [Mô tả pattern chung]\n\nHãy giúp tôi xác định nguyên nhân prompt này\nkhông cho kết quả mong muốn.\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003eNếu kết quả thay đổi nhiều giữa các lần chạy, vấn đề có thể là prompt thiếu ràng buộc cụ thể. Nếu kết quả sai giống nhau mỗi lần, vấn đề nằm ở logic hoặc cấu trúc prompt.\u003c\/p\u003e\n\n\u003ch3\u003eBước 2: Isolate — Cô lập biến\u003c\/h3\u003e\n\u003cp\u003eTách prompt thành các thành phần nhỏ và test từng phần riêng lẻ. Mục tiêu là tìm ra chính xác phần nào gây ra vấn đề.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eTôi đang debug prompt sau đây. Hãy giúp tôi phân tích\ntừng thành phần và xác định phần nào có vấn đề:\n\nPrompt gốc:\n\"\"\"\n[Dán toàn bộ prompt]\n\"\"\"\n\nHãy phân tích:\n1. Phần mô tả vai trò (role) — có rõ ràng không?\n2. Phần ngữ cảnh (context) — có đủ và không mâu thuẫn không?\n3. Phần chỉ dẫn cụ thể (instructions) — có logic không?\n4. Phần format đầu ra (output format) — có khả thi không?\n5. Phần ràng buộc (constraints) — có xung đột không?\n\nVới mỗi phần, đánh giá: Tốt \/ Cần cải thiện \/ Có vấn đề.\nNếu có vấn đề, giải thích cụ thể và đề xuất sửa.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eBước 3: Hypothesize — Đặt giả thuyết\u003c\/h3\u003e\n\u003cp\u003eDựa trên kết quả cô lập, đặt giả thuyết về nguyên nhân gốc. Các giả thuyết thường gặp:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGiả thuyết 1:\u003c\/strong\u003e Prompt thiếu ngữ cảnh cần thiết để Claude hiểu đúng yêu cầu\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGiả thuyết 2:\u003c\/strong\u003e Các chỉ dẫn trong prompt mâu thuẫn với nhau\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGiả thuyết 3:\u003c\/strong\u003e Format đầu ra không phù hợp với nội dung yêu cầu\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGiả thuyết 4:\u003c\/strong\u003e Prompt quá dài khiến Claude mất tập trung vào chỉ dẫn chính\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGiả thuyết 5:\u003c\/strong\u003e Thiếu ví dụ mẫu dẫn đến Claude hiểu sai tiêu chuẩn\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eMỗi giả thuyết cần có thể kiểm chứng được. Nếu bạn không thể thiết kế một test để chứng minh hoặc bác bỏ giả thuyết, giả thuyết đó chưa đủ cụ thể.\u003c\/p\u003e\n\n\u003ch3\u003eBước 4: Fix — Sửa và test\u003c\/h3\u003e\n\u003cp\u003eÁp dụng sửa đổi dựa trên giả thuyết và so sánh kết quả. Quan trọng: chỉ thay đổi một yếu tố mỗi lần để biết chính xác thay đổi nào tạo ra sự khác biệt.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eTôi đang A\/B test hai phiên bản prompt. Hãy đánh giá cả hai\nvà so sánh kết quả:\n\nPhiên bản A (gốc):\n\"\"\"\nViết tóm tắt bài báo này trong 100 từ.\n[Nội dung bài báo]\n\"\"\"\n\nPhiên bản B (đã sửa — thêm role và format):\n\"\"\"\nBạn là một biên tập viên báo chí với 10 năm kinh nghiệm.\nTóm tắt bài báo sau theo đúng 3 đoạn:\n- Đoạn 1: Thông tin chính (ai, cái gì, khi nào)\n- Đoạn 2: Chi tiết quan trọng\n- Đoạn 3: Ý nghĩa và tác động\nTổng cộng không quá 100 từ.\n\n[Nội dung bài báo]\n\"\"\"\n\nSo sánh: chính xác, đầy đủ, văn phong, độ dài.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eBước 5: Verify — Xác nhận trên nhiều trường hợp\u003c\/h3\u003e\n\u003cp\u003ePrompt đã sửa cần được test với nhiều đầu vào khác nhau để đảm bảo tính ổn định. Một prompt tốt phải hoạt động nhất quán, không chỉ với một trường hợp cụ thể.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eTôi đã sửa prompt và cần verify với nhiều trường hợp khác nhau.\n\nPrompt đã sửa:\n\"\"\"\n[Dán prompt đã sửa]\n\"\"\"\n\nHãy chạy prompt này với 3 trường hợp test khác nhau:\n1. Trường hợp bình thường (typical case)\n2. Trường hợp biên (edge case — input rất ngắn hoặc rất dài)\n3. Trường hợp khó (complex case — nhiều thông tin, nhiều yêu cầu)\n\nVới mỗi trường hợp, đánh giá: Pass \/ Fail \/ Partial.\nNếu Fail hoặc Partial, giải thích vấn đề cụ thể.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eA\/B Testing prompt có hệ thống\u003c\/h2\u003e\n\u003cp\u003eA\/B testing không chỉ là so sánh 2 phiên bản. Để có kết quả đáng tin cậy, bạn cần một quy trình có hệ thống.\u003c\/p\u003e\n\n\u003ch3\u003eThiết lập A\/B test\u003c\/h3\u003e\n\u003cp\u003eXác định rõ: biến độc lập (phần prompt thay đổi), biến phụ thuộc (metric cần đo), và điều kiện kiểm soát (những gì giữ nguyên).\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eTôi cần thiết lập A\/B test cho prompt sau.\nHãy giúp tôi xác định các yếu tố:\n\nPrompt hiện tại: [Dán prompt]\nVấn đề hiện tại: [Mô tả vấn đề]\n\n1. Biến độc lập: Phần nào của prompt sẽ thay đổi?\n2. Biến phụ thuộc: Đo lường kết quả bằng tiêu chí nào?\n   (độ chính xác, độ đầy đủ, giọng điệu, độ dài, ...)\n3. Điều kiện kiểm soát: Những gì cần giữ nguyên?\n4. Số lượng test: Cần chạy bao nhiêu lần để có ý nghĩa?\n5. Tiêu chí thành công: Thế nào là \"tốt hơn\"?\n\nTạo 2-3 phiên bản thay thế để test.\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eMa trận so sánh\u003c\/h3\u003e\n\u003cp\u003eSau khi chạy test, tổng hợp kết quả theo ma trận để dễ so sánh:\u003c\/p\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n\u003cth\u003eTiêu chí\u003c\/th\u003e\n\u003cth\u003eTrọng số\u003c\/th\u003e\n\u003cth\u003ePhiên bản A\u003c\/th\u003e\n\u003cth\u003ePhiên bản B\u003c\/th\u003e\n\u003cth\u003ePhiên bản C\u003c\/th\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eĐộ chính xác\u003c\/td\u003e\n\u003ctd\u003e40%\u003c\/td\u003e\n\u003ctd\u003e7\/10\u003c\/td\u003e\n\u003ctd\u003e9\/10\u003c\/td\u003e\n\u003ctd\u003e8\/10\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eĐộ đầy đủ\u003c\/td\u003e\n\u003ctd\u003e25%\u003c\/td\u003e\n\u003ctd\u003e6\/10\u003c\/td\u003e\n\u003ctd\u003e8\/10\u003c\/td\u003e\n\u003ctd\u003e9\/10\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eGiọng điệu\u003c\/td\u003e\n\u003ctd\u003e20%\u003c\/td\u003e\n\u003ctd\u003e8\/10\u003c\/td\u003e\n\u003ctd\u003e7\/10\u003c\/td\u003e\n\u003ctd\u003e8\/10\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003eĐộ dài phù hợp\u003c\/td\u003e\n\u003ctd\u003e15%\u003c\/td\u003e\n\u003ctd\u003e5\/10\u003c\/td\u003e\n\u003ctd\u003e9\/10\u003c\/td\u003e\n\u003ctd\u003e7\/10\u003c\/td\u003e\n\u003c\/tr\u003e\n  \u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eTổng điểm\u003c\/strong\u003e\u003c\/td\u003e\n\u003ctd\u003e100%\u003c\/td\u003e\n\u003ctd\u003e6.65\u003c\/td\u003e\n\u003ctd\u003e8.35\u003c\/td\u003e\n\u003ctd\u003e8.15\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/table\u003e\n\u003cp\u003eTrong ví dụ này, Phiên bản B thắng với điểm tổng hợp cao nhất, đặc biệt mạnh ở độ chính xác và độ dài phù hợp.\u003c\/p\u003e\n\n\u003ch2\u003ePrompt Versioning — Quản lý phiên bản prompt\u003c\/h2\u003e\n\u003cp\u003eKhi làm việc nghiêm túc với prompt — đặc biệt trong môi trường production — bạn cần hệ thống quản lý phiên bản tương tự như quản lý code.\u003c\/p\u003e\n\n\u003ch3\u003eCấu trúc phiên bản\u003c\/h3\u003e\n\u003cp\u003eÁp dụng quy tắc Semantic Versioning cho prompt:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMajor (v1.0 -\u0026gt; v2.0):\u003c\/strong\u003e Thay đổi cấu trúc prompt, đổi format đầu ra, hoặc thay đổi mục đích sử dụng\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eMinor (v1.0 -\u0026gt; v1.1):\u003c\/strong\u003e Thêm chỉ dẫn mới, bổ sung ví dụ, tinh chỉnh giọng điệu\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePatch (v1.0.0 -\u0026gt; v1.0.1):\u003c\/strong\u003e Sửa lỗi chính tả, điều chỉnh từ ngữ nhỏ, fix edge case\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTemplate ghi chép phiên bản\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003e## Prompt: [Tên prompt]\n## Phiên bản: v1.2.0\n## Ngày cập nhật: 2025-01-15\n## Tác giả: [Tên]\n\n### Thay đổi so với v1.1.0:\n- Thêm ví dụ mẫu cho trường hợp invoice nhiều trang\n- Bổ sung ràng buộc về format số tiền (VND, không dấu phẩy)\n- Sửa chỉ dẫn về xử lý trường hợp thiếu thông tin\n\n### Lý do thay đổi:\n- v1.1.0 xử lý sai invoice nhiều trang (miss trang 2+)\n- Khách hàng phản hồi format số tiền không nhất quán\n\n### Kết quả test:\n- Độ chính xác: 78% -\u0026gt; 91%\n- Edge case pass rate: 60% -\u0026gt; 85%\n\n### Prompt:\n\"\"\"\n[Nội dung prompt đầy đủ]\n\"\"\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eLưu trữ phiên bản với Git\u003c\/h3\u003e\n\u003cp\u003eCách đơn giản nhất để version control prompt là lưu trong repository Git, mỗi prompt là một file riêng:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eprompts\/\n  invoice-extraction\/\n    v1.0.0.txt\n    v1.1.0.txt\n    v1.2.0.txt\n    CHANGELOG.md\n    test-cases\/\n      typical.json\n      edge-cases.json\n  email-generation\/\n    v1.0.0.txt\n    v2.0.0.txt\n    CHANGELOG.md\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003eVới cách tổ chức này, bạn có thể dễ dàng rollback về phiên bản cũ nếu phiên bản mới có vấn đề, và theo dõi lịch sử thay đổi của từng prompt theo thời gian.\u003c\/p\u003e\n\n\u003ch2\u003eVí dụ thực tế: Debug prompt trích xuất thông tin hóa đơn\u003c\/h2\u003e\n\u003cp\u003eĐể minh họa quy trình 5 bước, hãy xem một trường hợp thực tế.\u003c\/p\u003e\n\n\u003ch3\u003eVấn đề ban đầu\u003c\/h3\u003e\n\u003cp\u003ePrompt gốc để trích xuất thông tin từ hóa đơn:\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eĐọc hóa đơn này và lấy thông tin quan trọng.\u003c\/code\u003e\u003c\/pre\u003e\n\u003cp\u003eKết quả: Claude trả về một đoạn văn mô tả nội dung hóa đơn thay vì dữ liệu có cấu trúc. Thiếu nhiều trường quan trọng.\u003c\/p\u003e\n\n\u003ch3\u003eBước 1 — Reproduce\u003c\/h3\u003e\n\u003cp\u003eChạy 3 lần với 3 hóa đơn khác nhau. Kết quả đều là đoạn văn không có cấu trúc, thiếu số hóa đơn và mã số thuế. Vấn đề có tính hệ thống.\u003c\/p\u003e\n\n\u003ch3\u003eBước 2 — Isolate\u003c\/h3\u003e\n\u003cp\u003ePhân tích prompt: thiếu role, thiếu định nghĩa \"thông tin quan trọng\", thiếu format đầu ra. Cả 3 yếu tố đều có vấn đề.\u003c\/p\u003e\n\n\u003ch3\u003eBước 3 — Hypothesize\u003c\/h3\u003e\n\u003cp\u003eGiả thuyết: Prompt thiếu cụ thể về (1) những trường nào cần trích xuất và (2) format đầu ra mong muốn.\u003c\/p\u003e\n\n\u003ch3\u003eBước 4 — Fix\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eBạn là chuyên gia xử lý hóa đơn tài chính.\nTrích xuất thông tin từ hóa đơn sau và trả về đúng format JSON:\n\n{\n  \"so_hoa_don\": \"\",\n  \"ngay_lap\": \"DD\/MM\/YYYY\",\n  \"ben_ban\": {\n    \"ten\": \"\",\n    \"ma_so_thue\": \"\",\n    \"dia_chi\": \"\"\n  },\n  \"ben_mua\": {\n    \"ten\": \"\",\n    \"ma_so_thue\": \"\",\n    \"dia_chi\": \"\"\n  },\n  \"danh_sach_hang_hoa\": [\n    {\n      \"ten\": \"\",\n      \"don_vi\": \"\",\n      \"so_luong\": 0,\n      \"don_gia\": 0,\n      \"thanh_tien\": 0\n    }\n  ],\n  \"tong_tien_truoc_thue\": 0,\n  \"thue_vat\": 0,\n  \"tong_tien_sau_thue\": 0\n}\n\nQuy tắc:\n- Số tiền là số nguyên (VND), không dấu phẩy\n- Nếu thiếu thông tin, ghi \"N\/A\"\n- Nếu không chắc chắn, ghi giá trị kèm \"[?]\"\n\nHóa đơn:\n[Dán nội dung hóa đơn]\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003eBước 5 — Verify\u003c\/h3\u003e\n\u003cp\u003eTest với 3 loại hóa đơn: hóa đơn đơn giản (2 dòng hàng), hóa đơn phức tạp (15 dòng hàng, nhiều trang), và hóa đơn scan chất lượng thấp. Kết quả: Pass\/Pass\/Partial (hóa đơn scan bị miss 1 dòng do mờ). Chấp nhận được — thêm chỉ dẫn xử lý ảnh chất lượng thấp vào phiên bản tiếp theo.\u003c\/p\u003e\n\n\u003ch2\u003ePrompt Quality Checklist\u003c\/h2\u003e\n\u003cp\u003eSau đây là checklist để kiểm tra chất lượng prompt trước khi đưa vào sử dụng. Đánh giá từng mục theo thang Pass \/ Warning \/ Fail.\u003c\/p\u003e\n\n\u003ch3\u003e1. Clarity — Sự rõ ràng\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eMục tiêu prompt có được phát biểu rõ ràng trong 1 câu không?\u003c\/li\u003e\n  \u003cli\u003eMỗi từ trong prompt có cần thiết không? Có từ nào thừa không?\u003c\/li\u003e\n  \u003cli\u003eNgười khác đọc prompt có hiểu đúng ý định của bạn không?\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003e2. Completeness — Sự đầy đủ\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eCó cung cấp đủ ngữ cảnh để Claude hiểu bài toán không?\u003c\/li\u003e\n  \u003cli\u003eFormat đầu ra có được chỉ rõ không?\u003c\/li\u003e\n  \u003cli\u003eCó ví dụ mẫu cho trường hợp phức tạp không?\u003c\/li\u003e\n  \u003cli\u003eCó chỉ dẫn xử lý edge case không?\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003e3. Consistency — Sự nhất quán\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eCác chỉ dẫn có mâu thuẫn với nhau không?\u003c\/li\u003e\n  \u003cli\u003eGiọng điệu yêu cầu có phù hợp với đối tượng và mục đích không?\u003c\/li\u003e\n  \u003cli\u003eCác ràng buộc có khả thi cùng lúc không?\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003e4. Constraints — Ràng buộc hợp lý\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eĐộ dài đầu ra có được giới hạn không?\u003c\/li\u003e\n  \u003cli\u003eCó ràng buộc về format, ngôn ngữ, giọng điệu không?\u003c\/li\u003e\n  \u003cli\u003eCác ràng buộc có đo lường được không?\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003e5. Testability — Khả năng kiểm thử\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eCó thể đánh giá kết quả là đúng\/sai một cách khách quan không?\u003c\/li\u003e\n  \u003cli\u003eCó tiêu chí thành công rõ ràng không?\u003c\/li\u003e\n  \u003cli\u003ePrompt có hoạt động nhất quán khi chạy nhiều lần không?\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003ePrompt để tự đánh giá\u003c\/h3\u003e\n\u003cpre\u003e\u003ccode\u003eHãy đánh giá prompt sau theo 5 tiêu chí (Clarity, Completeness,\nConsistency, Constraints, Testability). Cho điểm 1-10 mỗi tiêu chí\nvà giải thích lý do.\n\nPrompt cần đánh giá:\n\"\"\"\n[Dán prompt]\n\"\"\"\n\nFormat kết quả:\n| Tiêu chí | Điểm | Đánh giá | Đề xuất cải thiện |\n|----------|------|----------|-------------------|\n\nĐiểm tổng hợp và kết luận: prompt này sẵn sàng sử dụng hay cần chỉnh sửa?\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eCác pattern debug nâng cao\u003c\/h2\u003e\n\n\u003ch3\u003ePattern 1: Prompt decomposition\u003c\/h3\u003e\n\u003cp\u003eKhi một prompt phức tạp không hoạt động, chia nó thành nhiều prompt nhỏ hơn thực hiện tuần tự. Mỗi prompt làm một việc duy nhất.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eThay vì:\n\"Phân tích bài viết, tóm tắt, dịch sang tiếng Anh,\nvà tạo 5 tiêu đề thay thế\"\n\nChia thành 4 bước:\nBước 1: \"Phân tích bài viết sau và liệt kê 5 ý chính\"\nBước 2: \"Dựa trên 5 ý chính, viết tóm tắt 100 từ\"\nBước 3: \"Dịch đoạn tóm tắt sau sang tiếng Anh\"\nBước 4: \"Tạo 5 tiêu đề thay thế cho bài viết có nội dung: [tóm tắt]\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003ePattern 2: Progressive refinement\u003c\/h3\u003e\n\u003cp\u003eBắt đầu với prompt đơn giản, sau đó thêm dần các yêu cầu. Cách này giúp bạn xác định chính xác yêu cầu nào gây ra vấn đề. Vòng 1 chỉ yêu cầu kết quả cơ bản, vòng 2 thêm format cụ thể, vòng 3 thêm ràng buộc về giọng điệu và độ dài. Nếu vấn đề xuất hiện ở vòng 3, bạn biết ngay ràng buộc mới thêm là nguyên nhân.\u003c\/p\u003e\n\n\u003ch3\u003ePattern 3: Negative prompting\u003c\/h3\u003e\n\u003cp\u003eNói cho Claude biết những gì KHÔNG nên làm, đặc biệt khi bạn gặp vấn đề cụ thể lặp đi lặp lại.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eViết email chuyên nghiệp giới thiệu sản phẩm.\n\nKHÔNG làm những điều sau:\n- Không dùng câu mở đầu \"Kính gửi Quý khách hàng\"\n- Không liệt kê quá 3 tính năng\n- Không dùng ngôn ngữ phô trương (\"tốt nhất\", \"độc đáo\", \"hàng đầu\")\n- Không kết thúc bằng \"Trân trọng\"\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch3\u003ePattern 4: Meta-prompting\u003c\/h3\u003e\n\u003cp\u003eYêu cầu Claude tự đánh giá và cải thiện prompt của bạn trước khi thực hiện. Đây là kỹ thuật mạnh mẽ để nâng cấp chất lượng prompt.\u003c\/p\u003e\n\u003cpre\u003e\u003ccode\u003eTrước khi thực hiện, hãy:\n1. Phân tích prompt này và chỉ ra 3 điểm có thể cải thiện\n2. Đề xuất phiên bản prompt tốt hơn\n3. Thực hiện theo phiên bản đã cải thiện\n4. Giải thích tại sao phiên bản mới cho kết quả tốt hơn\u003c\/code\u003e\u003c\/pre\u003e\n\n\u003ch2\u003eXây dựng thư viện prompt đã kiểm chứng\u003c\/h2\u003e\n\u003cp\u003eSau khi debug và tối ưu, lưu prompt vào thư viện để tái sử dụng. Mỗi prompt trong thư viện cần có:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eTên và mô tả:\u003c\/strong\u003e Prompt này dùng để làm gì\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003ePhiên bản:\u003c\/strong\u003e Số phiên bản hiện tại\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eNội dung prompt:\u003c\/strong\u003e Prompt đầy đủ, sẵn sàng copy-paste\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eVí dụ input\/output:\u003c\/strong\u003e Ít nhất 2 cặp ví dụ\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eHạn chế đã biết:\u003c\/strong\u003e Trường hợp nào prompt không hoạt động tốt\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eLịch sử thay đổi:\u003c\/strong\u003e Các thay đổi quan trọng và lý do\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eLời khuyên thực tế khi debug prompt\u003c\/h2\u003e\n\u003cp\u003eSau nhiều năm làm việc với prompt engineering, đây là những bài học rút ra:\u003c\/p\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003e80% lỗi prompt là do thiếu cụ thể, không phải do model kém.\u003c\/strong\u003e Trước khi nghĩ model không đủ khả năng, hãy thử viết prompt cụ thể hơn.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eViết prompt cho người mới đọc cũng hiểu.\u003c\/strong\u003e Nếu đồng nghiệp đọc prompt của bạn mà không hiểu bạn muốn gì, Claude cũng sẽ không hiểu.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eTest với dữ liệu thật, không chỉ dữ liệu mẫu.\u003c\/strong\u003e Prompt hoạt động tốt với ví dụ đơn giản có thể fail với dữ liệu thật phức tạp hơn.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eGhi chép mỗi lần debug.\u003c\/strong\u003e Những lỗi bạn gặp hôm nay sẽ giúp bạn tránh lỗi tương tự trong tương lai.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eĐừng cố tối ưu sớm.\u003c\/strong\u003e Bắt đầu với prompt đơn giản, chỉ thêm độ phức tạp khi cần thiết.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch2\u003eBước tiếp theo\u003c\/h2\u003e\n\u003cp\u003eDebug prompt là kỹ năng nền tảng giúp bạn làm việc hiệu quả hơn với Claude và bất kỳ AI model nào. Khi đã thạo quy trình 5 bước này, bạn sẽ nhanh chóng xác định vấn đề và sửa lỗi thay vì thử-và-sai không có hệ thống. Tìm hiểu thêm các kỹ thuật prompt engineering nâng cao tại \u003ca href=\"\/en\/collections\/nang-cao\"\u003eThư viện Nâng cao\u003c\/a\u003e.\u003c\/p\u003e\n","brand":"Minh Tuấn","offers":[{"title":"Default Title","offer_id":47730163515604,"sku":null,"price":0.0,"currency_code":"VND","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0821\/0264\/9044\/files\/debug-prompt-framework-xac-d_nh-va-s_a-l_i-prompt-khong-ho_t-d_ng.jpg?v=1774716287","url":"https:\/\/claude.vn\/en\/products\/debug-prompt-framework-xac-d%e1%bb%8bnh-va-s%e1%bb%ada-l%e1%bb%97i-prompt-khong-ho%e1%ba%a1t-d%e1%bb%99ng","provider":"CLAUDE.VN","version":"1.0","type":"link"}