اولین پرامپت خوب شما
اگر چند بار با ChatGPT، Claude یا Gemini کار کرده باشید، احتمالا این تجربه را داشته اید:
یک درخواست می نویسید، مدل هم جواب می دهد، اما جواب دقیقا چیزی نیست که می خواستید.
ممکن است زیادی کلی باشد، لحنش مناسب نباشد، بخشی از خواسته شما را نادیده بگیرد یا اصلا مسئله را اشتباه فهمیده باشد.
واکنش طبیعی خیلی ها این است که بگویند:
«این هوش مصنوعی خوب جواب نمی دهد.»
اما خیلی وقت ها مشکل از هوش مصنوعی نیست. مشکل این است که ما درخواستمان را طوری نوشته ایم که چند برداشت مختلف از آن ممکن است.
پرامپت خوب قرار نیست جادویی، طولانی یا پر از اصطلاحات عجیب باشد.
یک پرامپت خوب فقط باید به مدل کمک کند چهار چیز را بفهمد:
- دقیقا چه کاری می خواهید انجام شود؟
- چه اطلاعاتی برای انجام آن لازم است؟
- چه محدودیت هایی وجود دارد؟
- خروجی نهایی باید چه شکلی باشد؟
اگر همین چهار بخش را درست بنویسید، کیفیت پاسخ معمولا به شکل محسوسی بهتر می شود.
پرامپت دقیقا چیست؟
پرامپت همان چیزی است که به مدل هوش مصنوعی می دهید تا بر اساس آن پاسخ تولید کند.
گاهی فقط یک سوال است:
تفاوت RAM و SSD چیست؟
گاهی یک درخواست است:
این متن را خلاصه کن.
و گاهی یک دستور کامل شامل هدف، اطلاعات زمینه ای، محدودیت ها و فرمت خروجی است.
نکته مهم اینجاست که مدل ذهن شما را نمی خواند.
اگر چیزی برای شما واضح است ولی در پرامپت نوشته نشده، هیچ تضمینی وجود ندارد که مدل همان برداشت را داشته باشد.
مثلا این درخواست را ببینید:
برای من یک متن درباره هوش مصنوعی بنویس.
از نظر فنی هیچ مشکلی ندارد. مدل هم احتمالا یک متن تولید می کند.
اما چند سوال بی جواب باقی مانده است:
- این متن برای چه کسی است؟
- مقاله است یا کپشن اینستاگرام؟
- آموزشی است یا تبلیغاتی؟
- چقدر طولانی باشد؟
- لحن رسمی باشد یا دوستانه؟
- درباره کدام بخش هوش مصنوعی صحبت کند؟
مدل مجبور است همه این موارد را حدس بزند.
هرچه تعداد حدس هایی که مدل باید بزند بیشتر باشد، احتمال اینکه نتیجه با چیزی که در ذهن شماست فرق داشته باشد هم بیشتر می شود.
ساختار ساده یک پرامپت خوب
برای شروع، من پیشنهاد می کنم پرامپت خودتان را با این چهار بخش بسازید:
هدف + زمینه + محدودیت + خروجی
لازم نیست همیشه این چهار عنوان را داخل پرامپت بنویسید. مهم این است که اطلاعاتشان وجود داشته باشد.
بیایید هر بخش را جدا بررسی کنیم.
1. هدف: دقیقا چه می خواهید؟
اولین بخش باید مشخص کند مدل چه کاری انجام دهد.
درخواست های مبهم مثل این معمولا نتیجه متوسط می دهند:
درباره Docker توضیح بده.
بهتر است هدف را واضح تر کنید:
Docker را برای کسی توضیح بده که با Linux آشناست اما تا امروز با Container کار نکرده است.
یا:
یک توضیح کوتاه درباره Docker بنویس که تفاوت Container و Virtual Machine را روشن کند.
در هر دو مثال، مدل بهتر می فهمد قرار است چه چیزی تولید کند.
یک قانون ساده:
اگر نتوانید در یک جمله بگویید دقیقا چه نتیجه ای می خواهید، احتمالا خود مسئله هنوز برای شما شفاف نشده است.
قبل از نوشتن یک پرامپت طولانی، هدف را روشن کنید.
2. زمینه: مدل چه چیزی باید درباره مسئله بداند؟
زمینه یا Context اطلاعاتی است که بدون آن مدل مجبور می شود حدس بزند.
فرض کنید می خواهید یک ایمیل بنویسید.
این پرامپت خیلی کلی است:
برای مشتری یک ایمیل بنویس و بابت تاخیر عذرخواهی کن.
اما اگر بنویسید:
ما یک شرکت نرم افزاری هستیم. تحویل نسخه جدید محصول سه روز تاخیر داشته چون یک مشکل امنیتی در تست نهایی پیدا شده است. می خواهیم به مشتری اطلاع بدهیم، مسئولیت تاخیر را بپذیریم و تاریخ جدید تحویل را پنجشنبه اعلام کنیم.
مدل حالا اطلاعات بسیار بیشتری برای تولید یک جواب مناسب دارد.
Context می تواند شامل این چیزها باشد:
- مخاطب شما
- شرایط پروژه
- اطلاعات قبلی
- هدف کسب و کار
- سطح دانش مخاطب
- داده ها یا متنی که باید بررسی شود
- اتفاقاتی که قبل از این درخواست افتاده است
اما یک اشتباه رایج هم وجود دارد:
Context بیشتر همیشه بهتر نیست.
اطلاعاتی را بدهید که روی جواب تاثیر دارد. ریختن چند صفحه اطلاعات نامرتبط داخل پرامپت فقط می تواند تمرکز مدل را کمتر کند.
3. محدودیت: چه چیزهایی نباید اتفاق بیفتد؟
خیلی وقت ها فقط می گوییم چه چیزی می خواهیم، اما نمی گوییم چه چیزی نمی خواهیم.
محدودیت ها کمک می کنند فضای پاسخ کوچک تر و دقیق تر شود.
مثلا:
متن کمتر از 200 کلمه باشد.
از اصطلاحات تخصصی استفاده نکن.
هیچ ادعای آماری بدون منبع اضافه نکن.
لحن تبلیغاتی نداشته باشد.
فقط راه حل هایی پیشنهاد بده که با ابزارهای رایگان قابل انجام هستند.
کد را با Python بنویس و از کتابخانه خارجی استفاده نکن.
محدودیت خوب باید قابل فهم و تا جای ممکن قابل اندازه گیری باشد.
مثلا «متن خوب باشد» محدودیت مفیدی نیست.
اما «متن برای مخاطب غیر فنی باشد و هیچ اصطلاح تخصصی بدون توضیح استفاده نشود» بسیار واضح تر است.
4. خروجی: جواب را در چه شکلی می خواهید؟
یکی از ساده ترین راه ها برای بهتر کردن پاسخ هوش مصنوعی این است که دقیقا بگویید خروجی باید چه فرمتی داشته باشد.
مثلا:
جواب را در یک جدول سه ستونه بده.
فقط پنج پیشنهاد بده و برای هرکدام یک توضیح یک جمله ای بنویس.
خروجی را به صورت JSON معتبر تولید کن.
ابتدا نتیجه را در دو جمله خلاصه کن و بعد جزئیات را بنویس.
متن را برای Teleprompter بنویس و جمله ها کوتاه باشند.
در پایان یک Checklist عملی اضافه کن.
مدل های زبانی در تولید فرمت های مختلف بسیار خوب هستند، اما باید بدانند چه فرمتی برای شما مفید است.
یک مثال از صفر تا یک پرامپت خوب
فرض کنید می خواهید برای LinkedIn درباره یادگیری هوش مصنوعی پست بنویسید.
نسخه اول:
یک پست درباره یادگیری هوش مصنوعی بنویس.
این درخواست قابل استفاده است، اما احتمالا یک متن عمومی تحویل می گیرید.
حالا آن را بهتر کنیم:
یک پست LinkedIn درباره اشتباه رایج افراد در یادگیری هوش مصنوعی بنویس.
مخاطب من متخصصان IT هستند که تازه استفاده حرفه ای از AI را شروع کرده اند.
پیام اصلی این باشد که یاد گرفتن نام صدها ابزار مهم نیست؛ مهم تر این است که فرد یاد بگیرد مسئله را درست تعریف کند و از AI برای حل آن استفاده کند.
متن بین 180 تا 220 کلمه باشد، لحن حرفه ای و مستقیم داشته باشد، از جملات کلیشه ای انگیزشی استفاده نکند و در پایان فقط یک سوال واقعی برای شروع گفتگو داشته باشد.
اینجا چهار بخش را داریم:
هدف: نوشتن پست LinkedIn
زمینه: مخاطب متخصص IT و موضوع یادگیری AI
محدودیت: 180 تا 220 کلمه، حرفه ای، بدون کلیشه
خروجی: یک پست با یک سوال در پایان
مدل حالا فضای بسیار کمتری برای حدس زدن دارد.
و همین معمولا یعنی خروجی بهتر.
آیا باید به مدل نقش بدهیم؟
احتمالا پرامپت هایی دیده اید که با این جمله ها شروع می شوند:
You are the world's best marketing expert...
یا:
Act as a senior software architect with 30 years of experience...
دادن نقش می تواند مفید باشد، اما نه به این دلیل که ناگهان مدل واقعا تبدیل به بهترین متخصص دنیا می شود.
نقش زمانی مفید است که زاویه نگاه، سطح تخصص یا نوع ارزیابی مورد انتظار را مشخص کند.
مثلا:
این معماری را از دید یک مهندس DevOps بررسی کن و روی Deployment، Observability و Failure Recovery تمرکز کن.
این جمله مفید است چون مشخص می کند مدل از چه زاویه ای مسئله را بررسی کند.
اما جمله ای مثل:
تو نابغه ترین متخصص تاریخ بشریت هستی.
بیشتر تزئینی است تا کاربردی.
اگر می خواهید پرامپت حرفه ای تر شود، به جای تعریف کردن از مدل، زاویه بررسی را مشخص کنید.
یک اشتباه مهم: نوشتن پرامپت های بیش از حد پیچیده
بعد از اینکه افراد با Prompt Engineering آشنا می شوند، گاهی به سمت افراط می روند.
برای یک کار ساده، پرامپتی با 30 قانون، 12 مرحله و چند صفحه توضیح می نویسند.
این همیشه بهتر نیست.
پرامپت باید به اندازه مسئله پیچیده باشد.
برای ترجمه یک جمله لازم نیست Framework طراحی کنید.
برای طراحی معماری یک سیستم بزرگ، یک جمله هم احتمالا کافی نیست.
هدف Prompt Engineering نوشتن متن طولانی نیست.
هدف این است که ابهام را تا حد لازم کم کنیم.
به جای یک پرامپت کامل، گفتگو کنید
یک نکته مهم دیگر:
لازم نیست همه چیز را در اولین پیام حل کنید.
مدل های امروزی برای گفتگو ساخته شده اند.
اگر جواب اولیه خوب بود اما کامل نبود، می توانید ادامه دهید:
بخش دوم را با مثال بیشتری توضیح بده.
این نسخه زیادی رسمی است. طبیعی ترش کن.
سه ایراد اصلی این پاسخ را پیدا کن.
حالا فرضیات خودت را بررسی کن و بگو کدام قسمت ها ممکن است اشتباه باشند.
قبل از پاسخ بعدی، سه سوال از من بپرس که برای دقیق تر شدن جواب لازم است.
این فرایند را Iteration می گوییم.
در بسیاری از کارهای واقعی، بهترین نتیجه نه از یک «پرامپت جادویی»، بلکه از چند رفت و برگشت درست به دست می آید.
از مدل بخواهید قبل از جواب سوال بپرسد
اگر مسئله شما اطلاعات کافی ندارد، یکی از بهترین تکنیک ها این است که اجازه ندهید مدل حدس بزند.
مثلا بنویسید:
اگر برای جواب دقیق اطلاعات کافی نداری، قبل از پاسخ حداکثر سه سوال از من بپرس.
این جمله ساده می تواند کیفیت خروجی را بسیار بالا ببرد.
فرض کنید می گویید:
برای سایت من یک صفحه اصلی طراحی کن.
مدل اطلاعات زیادی ندارد.
اما اگر اجازه سوال پرسیدن داشته باشد، ممکن است بپرسد:
- محصول یا خدمات سایت چیست؟
- مخاطب اصلی چه کسی است؟
- هدف اصلی صفحه فروش است، ثبت نام است یا معرفی برند؟
حالا مسئله از حالت حدس زدن خارج می شود.
یک Template ساده برای استفاده روزانه
برای بیشتر کارهای روزمره می توانید از این قالب استفاده کنید:
می خواهم [هدف] را انجام دهی.زمینه:
[اطلاعاتی که برای فهم مسئله لازم است]
محدودیت ها:
[قوانین، چیزهایی که نباید انجام شود، طول، لحن، ابزار و ...]
خروجی:
[فرمت دقیق پاسخ]
اگر اطلاعات کافی نداری، قبل از پاسخ سوال بپرس.
مثلا:
می خواهم برای معرفی یک وبینار هوش مصنوعی یک متن کوتاه بنویسی.زمینه:
مخاطب من مدیران و کارشناسانی هستند که از ChatGPT استفاده می کنند اما هنوز AI را وارد فرایندهای کاری خود نکرده اند.
محدودیت ها:
متن نباید تبلیغاتی و اغراق آمیز باشد.
حداکثر 120 کلمه باشد.
از عبارت هایی مثل «انقلابی» و «دنیای جدید» استفاده نکن.
خروجی:
یک عنوان، یک پاراگراف معرفی و سه نکته کوتاه درباره چیزی که مخاطب یاد می گیرد.
اگر اطلاعات کافی نداری، قبل از پاسخ سوال بپرس.
این قالب قرار نیست همیشه بهترین پرامپت ممکن باشد.
اما برای شروع، از بیشتر درخواست های تک جمله ای خیلی بهتر است.
چطور بفهمیم پرامپت ما خوب است؟
یک معیار ساده وجود دارد:
آیا فرد دیگری با خواندن درخواست شما می تواند بفهمد دقیقا چه خروجی ای انتظار دارید؟
اگر جواب نه است، احتمالا مدل هم مجبور می شود بخش هایی را حدس بزند.
قبل از ارسال یک پرامپت مهم، این چهار سوال را از خودتان بپرسید:
- آیا هدف مشخص است؟
- آیا Context لازم را داده ام؟
- آیا محدودیت های مهم را نوشته ام؟
- آیا شکل خروجی مشخص است؟
اگر جواب هر چهار مورد بله باشد، معمولا نقطه شروع خوبی دارید.
پرامپت نویسی واقعی از اینجا شروع می شود
Prompt Engineering فقط حفظ کردن چند فرمول نیست.
بخش مهم تر آن توانایی تعریف درست مسئله است.
وقتی شما نمی دانید دقیقا چه می خواهید، مدل هم نمی تواند آن را برایتان حدس بزند.
اما وقتی هدف، زمینه، محدودیت و شکل خروجی روشن باشد، حتی یک پرامپت نسبتا کوتاه می تواند نتیجه بسیار خوبی بدهد.
پس برای اولین پرامپت خوبتان لازم نیست دنبال یک متن عجیب و طولانی بگردید.
از همین چهار بخش شروع کنید:
هدف. زمینه. محدودیت. خروجی.
بعد جواب را ببینید، ایرادش را پیدا کنید و درخواست بعدی را دقیق تر بنویسید.
همین فرایند ساده، از حفظ کردن صدها «پرامپت آماده» مفیدتر است.