پرامپت دیباگ کد پایتون
دیباگ ساختاریافته پایتون: علت ریشهای، محل باگ، فیکس و تست کوچک — نه بازنویسی کل پروژه.
مناسب برای: برنامهنویس پایتون، دانشجو و فریلنسر
این پرامپت چه کاری انجام میدهد؟
traceback طولانی دارید، اما معلوم نیست خطا از داده ورودی است یا از منطق تابع. با {{CODE}}، {{ERROR}} و در صورت نیاز {{CONTEXT}}، خروجی ثابت میگیرید: خلاصه، علت ریشهای، محل باگ، فیکس، تست کوچک و نکته پیشگیری.
روی همان خطا تمرکز میکند؛ اگر داده ناقص باشد سؤال میپرسد نه حدس قطعی. برای اسکریپت، API، تمرین و قبل از PR مفید است.
جایگزین IDE یا تست خودکار نیست؛ فیکس را همیشه در محیط خودتان اجرا کنید. برای PR کامل code-review و برای کوئری مرتبط sql-query را جدا بگیرید.
خود پرامپت
نسخه فعال را کپی یا اجرا کن
تو یک مهندس نرمافزار ارشد پایتون هستی. کد و پیام خطا را بررسی کن و خروجی را دقیقاً با این ساختار بده: 1) خلاصه مشکل (یک جمله) 2) علت ریشهای (Root Cause) 3) محل دقیق باگ (فایل/تابع/خط تقریبی) 4) نسخه اصلاحشده کد 5) تست کوتاه برای تأیید اصلاح 6) نکته پیشگیری برای دفعات بعد قوانین: - فرض نکن؛ اگر اطلاعات کم است سؤال بپرس - فقط روی همان خطا تمرکز کن مگر اینکه باگ مرتبط ببینی - کد را کامل و قابل اجرا بنویس کد: {{CODE}} پیام خطا / رفتار اشتباه: {{ERROR}} محیط / نسخه (اختیاری): {{CONTEXT}}
چطور شخصیسازی کنی
- traceback کامل را فقط در {{ERROR}} بچسبانید — نه نسخه پایتون یا محیط.
- کد {{CODE}} را با import و فراخوانی مرتبط بدهید.
- در {{CONTEXT}} نسخه پایتون، فریمورک، OS، محیط اجرا و تغییر اخیر مرتبط را بنویسید.
- رفتار مورد انتظار را در ERROR یا CONTEXT ذکر کنید اگر خطا رفتاری است نه traceback.
- بخواهید «فقط minimal fix» اگر بازنویسی نمیخواهید.
جدول متغیرهای پرامپت
هر متغیر را با مثال خوب پر کنید؛ مثال بد نشان میدهد چه چیزی خروجی را خراب میکند.
| متغیر | معنا | مثال خوب | مثال بد |
|---|---|---|---|
| {{CODE}} | کد کامل یا تابع مشکلدار | تابع + فراخوانی + importهای مرتبط | یک خط بدون context |
| {{ERROR}} | traceback کامل یا رفتار اشتباه | ZeroDivisionError + خط فراخوانی | کار نمیکند |
| {{CONTEXT}} | نسخه پایتون، محیط یا ورودی نمونه (اختیاری) | Python 3.11، ورودی: لیست خالی | خالی یا «همه چیز» |
از کپی تا نتیجه؛ قدمبهقدم
- ۱traceback کامل را کپی کنید؛ خط و فایل را حذف نکنید.
- ۲کد را با همان ورودی که خطا داده اجرا کنید.
- ۳فیکس پیشنهادی را در محیط خود تست کنید.
- ۴اگر فیکس چند فایل میخواهد، code-review برای PR بگیرید.
- ۵برای منطق دیتابیس مرتبط، sql-query را جدا بررسی کنید.
ورودی ضعیف در برابر ورودی قوی
ضعیف
این کد پایتون خطا میدهد، درستش کن
قوی
CONTEXT: Python 3.11، محلی، ورودی: لیست خالی کد: def average(nums): return sum(nums)/len(nums) print(average([])) ERROR: ZeroDivisionError: division by zero انتظار: میانگین ۰ یا خطای کنترلشده برای لیست خالی
CONTEXT و ERROR جدا هستند؛ بدون هر دو مدل حدس میزند یا کل تابع را بازنویسی میکند.
سناریوی کامل
هدف: رفع KeyError در پردازش JSON API
ورودی پرشده
CONTEXT: Python 3.10، requests 2.28، API داخلی staging
کد: data = resp.json(); return data['user']['email']
ERROR: KeyError: 'user' — body: {"error": "not_found"} بدون کلید userخروجی مورد انتظار
خلاصه: فرض وجود user بدون بررسی ساختار پاسخ. علت: پاسخ خطا شکل متفاوت دارد. محل: خط access مستقیم. فیکس: بررسی status و .get() زنجیرهای یا schema validation. تست کوچک با mock پاسخ خطا. نکته پیشگیری: هر پاسخ خارجی را validate کنید.
قدم بعد: فیکس را اعمال و تست کنید؛ endpoint را با api-design یا code-review برای حالت خطا بازبینی کنید.
نمونه ورودی
کد:
items = [{"price": "10"}, {"price": "20"}]
total = sum(i["price"] for i in items)
خطا: TypeError: unsupported operand type(s) for +: 'int' and 'str'نمونه خروجی
خلاصه: جمع روی رشته و عدد. علت: price در دیکشنری str است. فیکس: int(i["price"]) یا Decimal. تست: assert sum(int(i["price"]) for i in items) == 30
چه زمانی از این پرامپت استفاده کنی
- رفع خطای runtime در اسکریپت پایتون
- درک traceback برای مبتدیها
- اصلاح باگ قبل از ارسال PR
- دیباگ کد تمرین یا تکلیف
- پیدا کردن edge case در توابع عددی و لیستی
اشتباهات رایج
- فقط کد را میفرستی و پیام خطا را نمیدهی
- نسخه پایتون و کتابخانه را مشخص نمیکنی
- ورودیای که باعث خطا شده را نمینویسی
- از مدل میخواهی کل پروژه را بازنویسی کند بهجای فیکس هدفمند
محدودیتها و موارد نامناسب
- بدون traceback، تحلیل کماطمینان میشود.
- کد به محیط شما (secrets، paths) دسترسی ندارد.
- باگهای توزیعشده یا race condition ممکن است نیاز به لاگ بیشتر داشته باشند.
- فیکس را قبل merge تست کنید؛ مدل ممکن است edge case از قلم بیاندازد.
ادامه در دسته برنامهنویسی یا بازگشت به کتابخانه پرامپتها.
این پرامپت برات مفید بود؟
این پرامپت یا پرامپت مرتبط؟
- پرامپت بررسی و ریویو کد
این صفحه: وقتی یک خطا و فیکس مشخص دارید
آن پرامپت: وقتی PR کامل را قبل از merge میخواهید
- پرامپت ساخت کوئری SQL
این صفحه: برای باگ منطق پایتون
آن پرامپت: وقتی مشکل در کوئری یا JOIN است
پرامپتهای مرتبط
سؤالات پرتکرار
کد خیلی بلند است؛ همه را بچسبانم؟+
تابع/ماژول مشکلدار + traceback کافی است؛ کل repo لازم نیست unless import chain مبهم است.
با Jupyter هم کار میکند؟+
بله؛ سلول خطادار و output را در CODE و ERROR بدهید.
بعد از فیکس چه کنم؟+
تست را اجرا کنید؛ برای PR همان بخش را با code-review و unit-test پوشش دهید.
این پرامپت را با GPT، Claude و Gemini همزمان اجرا کن و بهترین پاسخ را انتخاب کن
در حالت Compare Mode همان پرامپت را یکبار میفرستی و پاسخ سه مدل را کنار هم میبینی — بدون کپیکردن مجدد یا جابهجایی بین تبها.
یا به کتابخانه پرامپتهای آماده برگرد.