کار با هوش مصنوعی

آموزش مهندسی پرامپت

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

  • درس ۳ از ۱۵
  • مقدماتی
  • رایگان، بدون ثبت نام

چهار تکه ای که با هم یک پرامپت می شوند

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

  • زمینه

    کار چیست، برای چه کسی است، خواننده چه می داند و چه نمی داند.

  • خواسته

    یک فعل مشخص. «کمک کن انتخاب کند» با «توضیح بده» دو کار متفاوت اند.

  • محدودیت ها

    چه چیزی نباید بیاید. قانونی که نمی توانید بعدا چکش کنید هنوز تمام نشده.

  • شکل خروجی

    چند بخش، با تیتر یا بی تیتر، جدول یا پاراگراف. بیشترین وقت هدررفته اینجاست.

ترتیب نوشتنشان قانون ثابت ندارد. تنها جایی که ترتیب اثر دارد پرامپت های طولانی است و در بخش مربوطه آمده.

آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.

یک پرامپت درست از چه تکه هایی ساخته شده

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

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

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

چهار قطعه پازل شیشه ای قرمز، سبز، آبی و سفید که در یک مربع جا می افتند

همین چهار تکه روی یک مثال واقعی

این پرامپتی است که واقعا نوشته می شود، و اگر کمی خجالت آور به نظر می رسد برای این است که همه ما نسخه ای از آن را نوشته ایم:

یه متن برای سایتم بنویس درباره لنت ترمز. سئو شده باشه.

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

حالا همان خواسته با چهار تکه:

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

خواسته: یک متن ۲۰۰ کلمه ای بنویس که به خریدار کمک کند لنت مناسب ماشینش را انتخاب کند.

محدودیت: قیمت ننویس چون قیمت ها هفتگی عوض می شوند. هیچ برندی را توصیه نکن. هیچ صفت برتری مثل بهترین و باکیفیت ترین نیاور.

شکل خروجی: سه پاراگراف پشت سر هم، بدون تیتر، بدون فهرست.

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

یک نکته درباره طول: «۲۰۰ کلمه» را مدل ها تقریبی رعایت می کنند و نه دقیق. اگر عدد دقیق برایتان مهم است، آن را در خروجی بشمارید و در دور بعد اصلاح کنید؛ اصرار در پرامپت این را درست نمی کند. دلیلش هم به شکل کار مدل برمی گردد که در درس مدل زبانی بزرگ آمده: مدل کلمه نمی شمارد، توکن بعدی را حدس می زند.

همان مدل، دو پرامپت، دو نتیجه

چیزی که بین این دو ستون عوض شده، تعداد تصمیم هایی است که مدل به جای شما می گیرد.

پرامپت مبهم

  • مدل مخاطب را خودش حدس می زند
  • طول و لحن را خودش انتخاب می کند
  • شکل رایج اینترنت را برمی دارد: مقدمه، فهرست، نتیجه
  • شما خروجی را دوباره می چینید

پرامپت چهار تکه ای

  • مخاطب و دانسته هایش در زمینه نوشته شده
  • خواسته یک فعل مشخص دارد
  • محدودیت ها قابل چک کردن اند
  • شکل خروجی از قبل تعیین شده

ستون راست هم تضمین نیست. جواب دور اول را همچنان باید خواند و اصلاح کرد؛ فرقش این است که می دانید کدام تکه را عوض کنید.

پرامپت اول را در سه دور چطور درست کنیم

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

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

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

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

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

حلقه ای که پرامپت را درست می کند

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

هر دورفقط یک تغییر
  • ۱ عیب را در یک جمله بنویس
  • ۲ بگو عیب مال کدام تکه است
  • ۳ همان یک تکه را عوض کن
  • ۴ روی همان ورودی ها دوباره اجرا کن

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

کدام پرامپت ها را نگه داریم و کجا

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

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

اسم فایل را روی کار بگذارید و نه روی ابزار. «خلاصه پیام مشتری» یک سال دیگر هم معنی دارد؛ «پرامپت چت جی پی تی ۲» ندارد.

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

وقتی متن طولانی می دهید، سوال را کجا بگذارید

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

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

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

آن پرامپت های جادویی که می فروشند

موضع ما صریح است: بیشتر آن بسته های «۵۰۰ پرامپت طلایی» بی ارزش اند، و دلیلش اخلاقی نیست، فنی است. یک پرامپت خوب به سه چیز گره خورده که هیچ کدامشان مال فروشنده نیست: کار مشخص شما، ورودی های واقعی شما، و مدلی که امروز استفاده می کنید. هیچ پرامپتی این سه را با خودش حمل نمی کند.

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

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

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

مسیر سریع با هوش مصنوعی

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

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

نسخه آماده کپی

می خواهم پرامپتی بنویسی که یک مدل زبانی با آن این کار را انجام دهد: {کار، در یک جمله}

اینها نمونه های خروجی درست هستند:
{نمونه ۱}
{نمونه ۲}
{نمونه ۳}

این هم یک خروجی که قبلا گرفته ام و نمی خواهم تکرار شود:
{نمونه بد}

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

خود جواب را تولید نکن. فقط پرامپت را بنویس.

قبل از اعتماد به خروجی: مدل یک پرامپت باورپذیر می نویسد و نه یک پرامپت آزموده. قدم سوم، یعنی اجرا روی پنج ورودی واقعی، همان آزمون است و اختیاری نیست. جدا از آن، هر چیزی در آن پرامپت که واقعیت کسب و کار شماست، مثل قیمت و نام و قانون داخلی، را خودتان بنویسید و خودتان چک کنید؛ یک قانون غلط در پرامپت، در همه خروجی های بعدی بی صدا تکرار می شود.

هوش مصنوعی در این کار

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

ابزارهایی که واقعا کمک می کنند

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

کجا نتیجه معکوس می دهد

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

منبع ها: Anthropic: prompt engineering overview Anthropic: is my data used for model training Google: prompt design strategies for Gemini Anthropic: supported countries

حد این توصیه

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

از تجربه خود ما

قاعده اصلی این درس، یعنی اینکه قانونی که نمی توانید چکش کنید هنوز تمام نشده، از جایی آمده که خودمان هزینه اش را داده ایم. برای متن های این سایت یک فهرست نویسه ممنوع داریم: در حالت فارسی ۶۳ نویسه، از خط تیره بلند و نقل قول فرفری گرفته تا حرف ی و ک عربی، به اضافه ۱۲ عبارت پرکننده فارسی که هر کدام یک شروع کلیشه ای مقاله اند. سال ها فرض این بود که نوشتن این قانون ها داخل پرامپت کافی است. کافی نبود. حالا یک اسکریپت پایتون قبل از انتشار روی فایل اجرا می شود و هر نویسه را با کد یونیکدش گزارش می دهد، و در همان اولین جلسه ای که این بخش ساخته شد ۴ لغزش را گرفت که هیچ کدام با چشم دیده نشده بودند. نتیجه ای که برای پرامپت نویسی شما مهم است: دستور، خروجی را تضمین نمی کند؛ چک کننده تضمین می کند. شاهدش هم همین صفحه است، چون در هیچ کجای آن یک نیم فاصله یا خط تیره بلند پیدا نمی کنید.

سوال هایی که واقعا پرسیده می شوند

پرامپت را فارسی بنویسم یا انگلیسی؟

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

چرا همان پرامپت دیروز جواب می داد و امروز نه؟

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

دادن نقش به مدل، مثل «تو یک وکیل هستی»، واقعا فرق می کند؟

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