آخرین به‌روزرسانی:

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

مشکل از مدل نیست؛ از اندازه‌ی درخواست است. همان کاری که با یک همکار انسانی می‌کردید اینجا هم جواب می‌دهد: کار را تکه‌تکه جلو ببرید و بین تکه‌ها بررسی کنید.

چرا درخواست بزرگ خراب می‌شود؟#

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

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

پرامپت چندمرحله‌ای چطور کار می‌کند؟#

پرامپت چندمرحله‌ای یعنی کار را در چند نوبت پشت سر هم بخواهید و بین هر نوبت خروجی را خودتان بررسی کنید. الگوی ساده‌اش چهار قدم دارد:

الگوی پرامپت چندمرحله‌ای در چهار قدم: روشن‌کردن نیاز، نقشه، اجرای قدم‌به‌قدم و جمع‌بندی، با بررسی شما بین هر مرحله

۱. روشن‌کردن نیاز#

قبل از هر چیز، بگذارید مدل سؤال بپرسد:

پرامپت
می‌خواهم [کار کلی] را انجام دهم. هنوز راه‌حل نده.
اول هر سؤالی که برای انجام درست این کار لازم داری بپرس،
به‌خصوص درباره‌ی چیزهایی که ممکن است فرض اشتباه کنی.

جواب این سؤال‌ها همان فرض‌های پنهانی است که در درخواست بزرگ گم می‌شد.

۲. نقشه#

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

نقشه را بخوانید و اصلاح کنید. اینجا ارزان‌ترین جای تغییر است: عوض‌کردن یک خط نقشه چند ثانیه وقت می‌گیرد، عوض‌کردن همان تصمیم در کد نوشته‌شده چند ساعت.

۳. اجرا، یک قدم در هر نوبت#

پرامپت
قدم ۱ از نقشه را انجام بده. فقط همین قدم.
در پایان بگو چطور درستی‌اش را امتحان کنم.

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

۴. جمع‌بندی و بازبینی#

پرامپت
همه‌ی قدم‌ها انجام شد. کل کار را یک بار دیگر بررسی کن:
چیزی از نیازهای اول جا مانده؟ جایی هست که دو قدم با هم
ناسازگار باشند؟ فقط مشکل‌ها را فهرست کن.

این چهار پرامپت را، کنار قالب‌های دیگر، در بیست قالب پرامپت آماده هم آورده‌ایم.

یک نمونه‌ی واقعی چه شکلی است؟#

فرض کنید فرم ثبت‌نام برای یک کارگاه می‌خواهید که اطلاعات را در دیتابیس ذخیره کند و فهرستش را در پیشخوان وردپرس نشان دهد.

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

نقشه‌ی تأییدشده این شد:

  1. ساخت جدول هنگام فعال‌سازی افزونه
  2. شورت‌کد فرم با nonce
  3. پردازش فرم با اعتبارسنجی و بررسی ظرفیت
  4. صفحه‌ی فهرست ثبت‌نام‌ها در پیشخوان، فقط برای مدیر
  5. ایمیل تأیید

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

این الگو برای چه کارهای دیگری جواب می‌دهد؟#

برای هر کاری که چند تصمیم پشت سر هم دارد، از نوشتن مقاله تا مایگریشن دیتابیس:

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

برای مقاله، همین روش را با جزئیات در نوشتن مقاله با کمک هوش مصنوعی آورده‌ایم.

وقتی گفتگو بلند شد چه کنیم؟#

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

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

خلاصه را در گفتگوی تازه بچسبانید، همراه نسخه‌ی فعلی فایل‌هایی که قدم بعد لازم دارد. اگر قاعده‌هایی دارید که در همه‌ی قدم‌ها ثابت است، مثل نسخه‌ی PHP یا سبک کد، به‌جای تکرار، آن‌ها را در پرامپت سیستمی بگذارید.

کار چندمرحله‌ای با هوش مصنوعی به کجا می‌رود؟#

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

ولی نقش شما حذف نمی‌شود؛ جابه‌جا می‌شود. کمتر پرامپت تک می‌نویسید و بیشتر نقشه تأیید می‌کنید و نتیجه می‌سنجید. برای آماده‌شدن:

  • تعریف «تمام‌شده» را تمرین کنید: برای هر قدم بنویسید از کجا می‌فهمید درست انجام شده.
  • آزمون خودکار داشته باشید: هر چه ابزار خودکارتر شود، تست‌ها مهم‌ترند.
  • نقشه را جدی بخوانید: ارزان‌ترین جای جلوگیری از اشتباه، همچنان همان‌جاست.

خلاصه#

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