پرامپت‌نویسی برای برنامه‌نویسی و رفع خطا با هوش مصنوعی زمانی نتیجه می‌دهد که ابزار فقط «کد بنویس» یا «این خطا را حل کن» نشنود. مدل باید بداند با چه زبانی، در چه محیطی و برای رسیدن به چه نتیجه‌ای کار می‌کنید؛ همچنین باید متن خطا و بخش مرتبط کد را ببیند.

هدف از یک پرامپت خوب، گرفتن پاسخ طولانی‌تر نیست؛ هدف این است که مسئله دقیق‌تر تعریف شود و راه‌حل قابل آزمایش تحویل بگیرید. هوش مصنوعی می‌تواند در پیدا کردن علت احتمالی، توضیح خطا، پیشنهاد اصلاح و نوشتن تست کمک کند، اما اجرای واقعی و بررسی نهایی همچنان بر عهدهٔ برنامه‌نویس است.

پرامپت‌نویسی برای برنامه‌نویسی و رفع خطا از چه اجزایی تشکیل می‌شود؟

یک پرامپت فنی قابل‌اعتماد معمولاً پاسخ این پرسش‌ها را در خود دارد: چه چیزی ساخته می‌شود، مشکل دقیقاً چیست، کد در چه شرایطی اجرا می‌شود و از هوش مصنوعی چه خروجی‌ای می‌خواهید. هرچه این زمینه روشن‌تر باشد، احتمال دریافت پاسخ نامرتبط یا راه‌حل حدسی کمتر می‌شود.

  • هدف: توضیح دهید می‌خواهید کد چه کاری انجام دهد یا کدام رفتار اصلاح شود.
  • فناوری: زبان، نسخه، کتابخانه‌ها، چارچوب و سیستم‌عامل را مشخص کنید.
  • شواهد: کد مرتبط، ورودی نمونه، خروجی فعلی و متن کامل خطا را بیاورید.
  • محدودیت: مثلاً بگویید ساختار فعلی حفظ شود، کتابخانهٔ جدید اضافه نشود یا پاسخ با تغییر کم ارائه شود.
  • نوع پاسخ: بخواهید ابتدا علت را توضیح دهد، سپس نسخهٔ اصلاح‌شده و تست پیشنهادی را بنویسد.

چطور برای تولید کد، پرامپت دقیق بنویسیم؟

به‌جای توصیف کلی، خروجی مورد انتظار را با ورودی و نتیجهٔ نمونه بیان کنید. همچنین مشخص کنید کد قرار است به‌تنهایی اجرا شود یا بخشی از یک پروژهٔ موجود است؛ این تفاوت روی نام‌گذاری، وابستگی‌ها و ساختار پاسخ اثر می‌گذارد.

نمونهٔ ضعیف: برایم یک برنامهٔ پایتون بنویس که فایل‌ها را مرتب کند.

نمونهٔ بهتر: در پایتون ۳.۱۱ برنامه‌ای بنویس که فایل‌های یک پوشه را بر اساس پسوند در زیرپوشه‌های جدا قرار دهد. اگر پوشهٔ مقصد وجود نداشت، آن را بساز. نام فایل‌های تکراری را تغییر نده و پیش از جابه‌جایی، فهرست عملیات را نمایش بده. ابتدا منطق کار را کوتاه توضیح بده، سپس کد و دو تست برای فایل معمولی و فایل هم‌نام ارائه کن.

در نمونهٔ دوم، رفتار برنامه، نسخهٔ زبان، وضعیت پوشه‌ها و حالت‌های حساس مشخص شده است. درخواست تست هم کمک می‌کند پاسخ فقط ظاهراً درست نباشد و بتوانید آن را بررسی کنید.

الگوی مرحله‌به‌مرحله برای رفع خطای کد با هوش مصنوعی

برای خطایابی، بهتر است پرامپت را به گزارش فنی کوتاهی تبدیل کنید. متن خطا را خلاصه نکنید؛ پیام کامل، شمارهٔ خط و زنجیرهٔ خطا در بسیاری از موارد سرنخ اصلی هستند.

  1. محیط را معرفی کنید: زبان، نسخه، چارچوب، ابزار اجرا و در صورت ارتباط، پایگاه داده یا مرورگر را بنویسید.
  2. رفتار را مقایسه کنید: توضیح دهید چه چیزی انتظار داشتید و اکنون چه اتفاقی می‌افتد.
  3. نمونهٔ قابل تکرار بدهید: ورودی مشخص و کوچک ارائه کنید تا مسئله از حالت مبهم خارج شود.
  4. خطا را کامل درج کنید: پیام، نوع خطا و محل وقوع آن را بدون حذف بخش‌های مهم بیاورید.
  5. نوع کمک را تعیین کنید: بخواهید علت‌های احتمالی را از محتمل‌ترین مورد شروع کند و برای هرکدام روش بررسی بدهد.

نمونهٔ پرامپت رفع خطا: در یک پروژهٔ جاوااسکریپت، تابع زیر هنگام دریافت آرایهٔ خالی مقدار undefined برمی‌گرداند، در حالی که انتظار دارم مقدار صفر برگردد. محیط اجرا Node.js نسخهٔ ۲۰ است. ابتدا توضیح بده چرا این رفتار رخ می‌دهد، سپس کمترین تغییر ممکن را پیشنهاد کن و برای آرایهٔ خالی، آرایهٔ دارای عدد و ورودی نامعتبر تست بنویس. اگر دربارهٔ نوع ورودی ابهامی وجود دارد، آن را جداگانه مشخص کن.

این ساختار، هوش مصنوعی را وادار نمی‌کند بدون بررسی یک خط را دست‌کاری کند؛ بلکه از آن می‌خواهد علت، اصلاح و روش آزمون را از هم جدا کند.

برای گرفتن پاسخ بهتر، از هوش مصنوعی چه خروجی‌ای بخواهیم؟

درخواست «کد اصلاح‌شده را بده» ممکن است تغییرات زیادی ایجاد کند و فهمیدن اثر آن‌ها را دشوار سازد. بهتر است قالب پاسخ را از قبل تعیین کنید؛ به‌خصوص در پروژه‌ای که کدهای قبلی باید حفظ شوند.

  • ابتدا علت احتمالی خطا و شواهد آن را در چند جمله توضیح بده.
  • فقط فایل یا تابعی را که باید تغییر کند مشخص کن.
  • نسخهٔ اصلاح‌شده را همراه با علامت‌گذاری تغییرات ارائه کن.
  • تست‌هایی برای حالت عادی، ورودی خالی و ورودی نامعتبر پیشنهاد بده.
  • اگر اطلاعات کافی نیست، به‌جای حدس‌زدن، پرسش‌های ضروری را فهرست کن.

درخواست مقایسهٔ دو راه‌حل هم مفید است. مثلاً می‌توانید بخواهید روش سریع‌تر و روش خواناتر را جدا توضیح دهد و بگوید هرکدام چه هزینه‌ای از نظر حافظه، نگهداری یا سازگاری دارند.

چه اطلاعاتی را نباید بی‌دقت در پرامپت وارد کرد؟

کد واقعی ممکن است شامل رمز عبور، کلید دسترسی، نشانی خصوصی سرویس‌ها، اطلاعات مشتریان یا داده‌های شخصی باشد. این موارد را پیش از ارسال حذف کنید و به‌جای آن‌ها از مقادیر ساختگی مانند کلید نمونه یا نام کاربر فرضی استفاده کنید.

همچنین بهتر است فقط بخش لازم پروژه را بفرستید. کوچک‌کردن مسئله دو مزیت دارد: هم احتمال افشای اطلاعات کمتر می‌شود و هم مدل سریع‌تر رابطهٔ میان خطا و کد مربوط را پیدا می‌کند. اگر حذف بخشی از کد رفتار خطا را تغییر می‌دهد، همان وابستگی را به‌صورت توضیحی بیان کنید.

پاسخ هوش مصنوعی را چگونه بررسی و اصلاح کنیم؟

کدی که ظاهر منطقی دارد، الزاماً در پروژهٔ شما درست کار نمی‌کند. پاسخ را در محیط آزمایشی اجرا کنید و ببینید آیا با نسخهٔ زبان، کتابخانه‌ها و قراردادهای موجود سازگار است یا نه.

برای خطایابی چندمرحله‌ای، نتیجهٔ هر آزمایش را به پرامپت بعدی اضافه کنید. اگر راه‌حل اول خطای تازه‌ای ایجاد کرد، متن خطای جدید، تغییر انجام‌شده و نتیجهٔ مورد انتظار را بنویسید و بخواهید فقط بر اساس همین داده‌ها علت را بازبینی کند.

در مسائل امنیتی، احراز هویت، پرداخت، حذف داده یا دسترسی به فایل‌ها احتیاط بیشتری لازم است. قبل از استفادهٔ واقعی، کد را بازبینی کنید، ورودی‌های غیرقابل‌اعتماد را آزمایش کنید و به توضیح اطمینان‌بخش مدل به‌عنوان مدرک امنیتی تکیه نکنید.

جمع‌بندی پرامپت‌نویسی برای برنامه‌نویسی و رفع خطا با هوش مصنوعی

پرامپت خوب برای برنامه‌نویسی یک دستور کوتاه و مبهم نیست؛ گزارش فنی کوچکی است که هدف، محیط، کد مرتبط، خطا، نتیجهٔ مورد انتظار و محدودیت‌ها را مشخص می‌کند. برای نتیجهٔ قابل‌اعتماد، از هوش مصنوعی بخواهید علت را توضیح دهد، تغییرات را محدود نگه دارد و تست پیشنهاد کند؛ سپس پاسخ را در محیط واقعی یا آزمایشی اجرا و بازبینی کنید.