آموزشمدل‌های زبانی بزرگ (LLM)

درس ۵۲ از ۸۵، هوش مصنوعی، حدود ۱۱ دقیقه خواندن

مهندسی پرامپت: اصل‌های پایه

جواب کوتاه

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

یعنی چی

یه پرامپت که یه بار خوب جواب بده، کافی نیست. مهندسی پرامپت یعنی پرامپتی بسازید که صد بار، روی صد ورودی مختلف، خوب جواب بده.

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

اول معیار

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

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

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

بخش‌های پرامپت

یه پرامپت خوب برای یه کار تکراری، مثل یه فرم مرتبه. هر چیزی جای خودش رو داره.

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

یه نکته‌ی مهم: بخش‌ها رو از هم جدا کنید. راهنمای Claude می‌گه برچسب‌هایی مثل <instructions> و <context> که دور هر بخش می‌پیچید، به مدل کمک می‌کنن بفهمه کدوم تیکه دستوره، کدوم سند، کدوم نمونه؛ و اشتباه رو کم می‌کنن. اسم برچسب‌ها رو ثابت و گویا نگه دارید تا هر بار یکی باشن. بی این جداکننده، ممکنه مدل یه جمله از توی سند رو با دستور شما قاطی کنه.

بگید چی بشه

وقتی می‌خواید جواب یه شکل خاص داشته باشه، بگید چه شکلی باشه، نه چه شکلی نباشه.

راهنمای Claude همین مثال رو می‌زنه: به‌جای «مارک‌داون نذار» بنویسید «جواب، پاراگراف‌های روون باشه». از درس قبل یادمونه که هر کلمه‌ی پرامپت زمینه‌ست؛ «پاراگراف روون» مستقیم شکل جواب درست رو توصیف می‌کنه. همون راهنما می‌گه سبک خود پرامپت هم روی سبک جواب اثر داره؛ پرامپتی که پر از فهرست و تیتره، جواب پر از فهرست و تیتر می‌گیره.

متن بلند

اگه یه سند بلند، مثلا یه گزارش چندده‌صفحه‌ای، به مدل می‌دید، جاش مهمه.

راهنمای Claude می‌گه برای متن‌های بلند (بالای حدود ۲۰ هزار توکن)، سند رو بالای پرامپت بذارید و سوال و دستور رو آخر. توی آزمون‌هاشون، سوال در آخر تا ۳۰ درصد کیفیت جواب رو بهتر کرده، مخصوصا وقتی چند تا سند بود. اگه چند سند دارید، هر کدوم رو توی برچسب خودش بذارید، با منبعش. یادتون هم باشه همه‌ی اینا باید توی پنجره‌ی زمینه جا بشه.

حلقه‌ی آزمون

حالا قسمتی که «مهندسی» رو مهندسی می‌کنه: آزمودن.

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

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

یه کار بزرگ، چند پرامپت کوچیک

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

ویکی‌پدیا به این کار زنجیره کردن پرامپت (Prompt Chaining) می‌گه: کار به قدم‌ها شکسته می‌شه و خروجی هر قدم، ورودی قدم بعده. مثلا اول نکته‌های اصلی یه سند درمیاد، بعد از روی همون‌ها پیش‌نویس نوشته می‌شه، و آخر پیش‌نویس با معیارها سنجیده و درست می‌شه. خوبیش اینه که هر قدم رو جدا می‌شه آزمون و درست کرد، و اگه خراب شد، می‌دونید کجا خراب شده.

یه پژوهش ۲۰۲۲ حتی خود نوشتن پرامپت رو هم به مدل سپرد: مدل چند دستور پیشنهادی می‌نوشت، روی نمونه‌ها امتحان می‌شدن، و بهترینش انتخاب می‌شد. دستورهایی که این‌طوری پیدا شدن، توی ۱۹ تا از ۲۴ کار، به اندازه‌ی دستورهایی که آدم‌ها نوشته بودن یا بهتر بودن. یعنی همون حلقه‌ی آزمونی که توی این درس دیدیم، رو می‌شه تا حدی خودکار هم کرد.

چند نکته

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

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

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • اول معیار، با عدد.
  • بخش‌ها جدا و برچسب‌دار.
  • بگید چی بشه، نه چی نشه.
  • سند بلند بالا، سوال پایین.
  • آزمون، یه تغییر، دوباره آزمون.

خودتون رو بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخرش فقط کارنامه رو می‌بینید: چند تا درست، چند تا نادرست.

خودتون رو بسنجید

۱۵ پرسش

  • هر بار پرسش‌ها و ترتیب گزینه‌ها عوض می‌شه.
  • تا آخر نمی‌گیم کدوم جواب درست بوده؛ می‌تونید برگردید و جوابتون رو عوض کنید.
  • آخرش کارنامه می‌گیرید: چند تا درست، چند تا نادرست.
  • اگه وسطش بستید، دوباره که باز کنید از همون‌جا ادامه می‌دید.

فصل‌های این درس

درس بعد