نخستین‌بار در Vectors of Mind منتشر شد.


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

کار من به‌طرز خطرناکی به مهندسی پرامپت1 نزدیک شده است. این برای من کاملاً مناسب است، چون عشق من به نویسندگی، روان‌سنجی و پردازش زبان طبیعی (NLP) را با هم ترکیب می‌کند. در اینجا برخی از قدرتمندترین فنون پرامپت‌نویسی را می‌آورم:

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

۱. دستورالعمل‌های روشن و مشخص#

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

تصویر برگرفته از «چگونه به chatGPT پرامپت بدهیم»

مزه‌اش عالی بود، ممنون که پرسیدید. نمونه‌های دیگر:

  • «تاریخچهٔ هوش مصنوعی را در یک بند خلاصه کن.»

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

  • «متن نقل‌شده را به سبک وایت و استرانک بازنویسی کن. سه گزینه به من بده.»

  • «یک ماتریس همبستگی پیرسون برای ستون‌های ۲ تا ۷ فایل ‎.csv‎ پیوست‌شده محاسبه کن.»

    • پیگیری: «کدی بنویس که نتایج را به‌صورت نقشهٔ حرارتی و با وضوحی به‌اندازهٔ کافی بالا برای استفاده در یک پوستر نمایش دهد. در انتخاب‌های زیبایی‌شناختی از بهترین رویه‌ها استفاده کن.»

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

۲. استدلال زنجیره‌فکری#

مدل‌های زبانی بزرگ با پیکره‌ای عظیم از متون آموزش می‌بینند تا کلمهٔ بعدی را پیش‌بینی کنند. شگفت‌آور است که همین امر آن‌ها را در تقریب‌زدن به استدلال توانمند می‌کند، اما این توانایی در کارهای پیچیده به‌سرعت از هم می‌پاشد. در اینجا «پیچیده» می‌تواند چیزی مانند «اعداد ستون ۱ را با هم جمع کن» باشد. انجام این کار به‌صورت یک‌شات (1-shot) بسیار دشوار است و مدل عددی را بیرون می‌دهد که معقول به نظر می‌رسد و احتمالاً در دامنهٔ درست قرار دارد، اما پاسخ صحیح نیست. افزودن عبارت «دربارهٔ آن گام‌به‌گام فکر کن» شگفتی می‌کند. اغلب حتی لازم نیست مشخص کنید گام‌ها چه هستند؛ مدل‌های زبانی بزرگ می‌توانند استنباط کنند که برای جمع‌زدن ستون، گام‌های میانی نوشتنِ عبارتِ «n1 + n2 + n3 + … + n100 =» است. در واقع، با این کار به خودش پرامپت می‌دهد تا در سمت درست علامت تساوی به پاسخ بهتری برسد؛ یا به قیاس، به خودش فرصت فکرکردن می‌دهد. برای هر مسئله‌ای، عبارت «دربارهٔ آن گام‌به‌گام فکر کن» نخستین خط دفاعی شما در مواجهه با توهم‌های مدل‌های زبانی بزرگ است. اگر این کار جواب نداد، خودتان گام‌ها را شماره‌گذاری کنید (فنی که دوباره به آن بازخواهیم گشت).

۳. پیش از انجام کار، اطلاعات لازم را گردآوری کنید#

اگر از chatGPT بخواهید یک پست وبلاگی بنویسد (من هرگز چنین کاری نمی‌کنم) یا یک تابع پایتون بنویسد (این یکی را حتماً انجام می‌دهم)، بدون پرسیدن جزئیاتِ آنچه واقعاً می‌خواهید، بی‌درنگ شروع به نوشتن می‌کند. با گفتن چیزی مانند «می‌خواهم تابعی بنویسم که X را انجام دهد؛ پیش از کدنویسی چه اطلاعاتی باید گردآوری کنم؟» یا «تابعی بنویس که X را انجام دهد، اما پیش از نوشتن کد، ابتدا هر اطلاعات لازم را از من بپرس» می‌توان از بخش بزرگی از این مشکل جلوگیری کرد؛ که در آن «X» توصیفی ناقص است.

۴. کارها را به گام‌هایی تقسیم کنید#

هرگاه chatGPT در انجام تکلیفی شکست خورد و زنجیره‌فکری نیز کمکی نکرد، کار را به خرده‌کارها تقسیم کنید. این کار اغلب از همان ابتدا نیمی از کارِ یک تکلیف است و، تصادفاً، همان چیزی است که مدل‌های زبانی بزرگ (در حال حاضر) به‌تنهایی در انجامش مشکل دارند. بااین‌حال، توجه کنید که اغلب می‌توانید این کار را نیز به مدل زبانی بزرگ واگذار کنید3. برای مثال، از chatGPT خواستم برای یک آزمون خلاقیت (که می‌توانید نگاهی سریع به آن بیندازید) چند گویه پیشنهاد کند:

دارم سعی می‌کنم پرسش‌های بیشتری شبیه آزمون تداعی‌های دور (RAT) طراحی کنم. در RAT از افراد خواسته می‌شود واژهٔ مشترکی را بیابند که سه واژهٔ ظاهراً نامرتبط را به هم پیوند می‌دهد. در اینجا چند مجموعهٔ نمونه از واژه‌ها آمده است:

۱. کلبه، سوئیسی، کیک (پاسخ: پنیر)

۲. بلند، کتاب، صندلی (پاسخ: مدرسه)

۳. میوه، خیره‌شدن، ترافیک (پاسخ: مربا)

۴. خامه، اسکیت، آب (پاسخ: یخ)

۵. درد، شکارچی، کلم (پاسخ: سر)

۶. آداب، گرد، تنیس (پاسخ: میز)

۷. افتادن، بازیگر، غبار (پاسخ: ستاره)

۸. نور، تولد، چوب (پاسخ: شمع)

۹. سالاد، سر، غاز (پاسخ: تخم‌مرغ)

۱۰. موسیقی، دردکشیده، سبز (پاسخ: سیب)

بهترین رویه‌ها چیستند؟ چگونه باید به‌صورت گام‌به‌گام به این کار فکر کنم؟

همان‌طور که chatGPT در توضیح چگونگی جمع‌زدن اعداد خوب است، در تولید «دستورالعمل» برای انجام کارها نیز عالی عمل می‌کند. پس از آنکه پاسخ خود را ارائه کرد، تنها کاری که لازم بود انجام دهم این بود:

«عالی است! حالا آن فرایند را طی کن و ۵ پرسش جدید تولید کن.»

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

۵. اصطلاحات فنی دوست شما هستند#

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

۶. مجموعه‌ای درهم‌ریخته از پرامپت‌های سودمند#

در اینجا چند عبارتی را می‌آورم که متوجه شده‌ام مرتب از آن‌ها استفاده می‌کنم:

  • «آیا این درست است؟»

    • هرگاه خلاصه‌ای از کار شخص دیگری می‌نویسم یا ایده‌ای را توصیف می‌کنم که با آن کاملاً آشنا نیستم، نوشته‌ام را کپی‌پیست می‌کنم و می‌پرسم آیا درست است یا نه. معمولاً در اشاره‌کردن به بخش‌هایی که قابل مناقشه‌اند، عملکرد بسیار خوبی دارد.
  • «مطمئنی؟»

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

    • یکی از بهترین کاربردهای مدل زبانی بزرگ کمک به شما برای کاوش در فضای ایده‌هاست. گاهی لازم است تشویقش کنید تا از پاسخ‌های مُد فاصله بگیرد.

اگر شما هم عبارت‌های ثابت و موردعلاقه‌ای دارید، آن‌ها را در بخش دیدگاه‌ها اضافه کنید!


  1. کار من همچنین بیش از آنچه می‌خواهم ناپایدار و نامنظم شده است؛ بنابراین، اگر در علوم داده، هوش مصنوعی یا روان‌سنجی کار قراردادی دارید، با من تماس بگیرید! ↩︎

  2. راستش، هیچ راهی وجود ندارد که یک مدل زبانی بزرگ بتواند هر ۱۴۲–۴۲۰ خانوادهٔ زبانی جهان را فهرست کند. از آنجا که این کار «ناممکن» است (یعنی بیش از حد از رفتار پیش‌فرض آن فاصله دارد و از یک محدودیت سختِ توکن فراتر می‌رود)، واژهٔ «جامع» برای مقابله با جاذبهٔ پاسخ کوتاه به کار می‌رود و مدل زبانی بزرگ را وادار می‌کند با تفصیل بیشتری پاسخ دهد. این وجه منفی پرامپت‌نویسی است؛ فرایندی که گاهی به التماس، زاری، رشوه‌دادن و تهدید فروکاسته می‌شود. ↩︎

  3. این واقعیت که می‌توانید برای تقسیم‌کردن خرده‌کار به یک مدل زبانی بزرگ کمک بگیرید، نشان می‌دهد که این فرایند نیز به‌طور فزاینده‌ای خودکار خواهد شد. چه کسی می‌داند نسل‌های آینده قادر به انجام چه کارهایی خواهند بود. ↩︎