مدلهای بزرگ زبانی (LLMها) که تواناییشان را در چتباتهایی مثل ChatGPT و دیگر ابزارهای هوش مصنوعی مولد (Generative AI) در یک سال اخیر ثابت کردهاند، الآن دیگر برای خیلی از کارهایی که سابقا خودمان مجبور به سروکله زدن دستی با آنها بودیم، دستیار سریع و (خیلی اوقات) دقیقی به حساب میآیند. اما حرف زدن با LLMها و فهماندن منظور به آنها، راه و رسم خودش را دارد و به همین خاطر است که Promptنویسی به یک مهارت تبدیل شده و برخی از شرکتهای تکنولوژی، موقعیتهای شغلی با عنوان Prompt Engineer در ساختار سازمانشان معرفی کردهاند. Sheila Teo هم اخیرا مقالهای در مدیوم نوشته و در آن ضمن اشاره به رقابتی بین Promptنویسهای GPT-4 در سنگاپور که در آن توانسته مقام اول را کسب کند، از استراتژیها و تکنیکهایی گفته که به کمک آنها توانسته بهرهبرداری بهتری از توان LLMها داشته باشد و کارایی بیشتری از آنها بگیرد. او Promptنویسی را مهارتی میداند که ترکیبی از هنر و دانش است و هم به دانش و فهم فنی نیاز دارد و هم خلاقیت و تفکر استراتژیک. او توصیههایش را در چهار دسته تقسیمبندی کرده:
۱) ساختار Promptها را براساس چهارچوب CO-STAR بچینید
زمینه و فرامتن (Context): اطلاعات کافی درباره زمینه و شرایط کار مدنظرتان را در اختیار LLM قرار دهید تا مطمئن باشید پاسخ مرتبطی به درخواستتان میدهد.
هدف و خواسته (Objective): کاری را که از LLM میخواهید به صورت شفاف شرح دهید تا بداند روی چه چیزی دقیقا باید تمرکز کند.
سبک و شیوه (Style): مشخص کنید میخواهید LLM پاسختان را به چه سبک و شیوهای بنویسد؛ مثلا به سبک ادبی بنویسد یا به سبک یک گزارش علمی یا گزارش ژورنالیستی. با این کار LLM از کلمهها و جملات و ساختار متنی استفاده میکند که منطبق با نیازهای شماست.
لحن (Tone): مشخص کنید پاسخ LLM چه لحنی باید داشته باشد و چه احساسی را منتقل کند؛ رسمی و خشک باشد، یا طنز و همراه با شوخطبعی، یا همدلانه یا …
مخاطب (Audience): پاسخی که LLM آماده میکند، برای چه مخاطبیست؟ متخصص آن حوزه؟ یک فرد مبتدی در آن زمینه؟ یک فرد عامی؟
پاسخ (Response): پاسختان را در چه قالبی میخواهید؟ یک لیست؟ یک متن؟ یک قطعه کد؟ یک گزارش حرفهای؟
در ادامه Sheila Teo از یک GPT-4 خواسته تا برای معرفی محصول جدید یک برند، یک پست معرفی فیسبوک بنویسد و یکبار یک Promt عادی نوشته و یکبار یک Prompt با ساختار CO-STAR و پاسخها را با همدیگر مقایسه کرده است.
۲) به کمک جداکنندهها Promptتان را بخشبندی کنید تا LLM بهتر آن را بفهمد:
وقتی Prompt شما طولانی و پیچیده میشود، بهتر است بخشهای مختلف آن را با نشانهها و جداکنندههایی تفکیک کنید تا LLM بهتر منظورتان را بفهمد. مثلا اگر میخواهید در متن Promptتان مثالی برای فهم بهتر LLM بیاورید، بهتر است آن را با نشانههایی مشخص کنید تا از سایر بخشهای متن تمیز داده شود. میتوانید برای هر بخش که از سایر بخشها با این نشانهها و جداکنندهها، تفکیک شده، عنوانی هم بگذارید تا LLM بهتر و دقیقتر متوجه خواسته و منظور شما شود.
۳) از Promptهای سیستمی کمک بگیرید تا LLM بداند به صورت کلی در پاسخ به درخواستهای شما چطور باید رفتار کند:
به عنوان مثال در Chat-GPT میتوانید در Custom Instructions این Promptهای سیستمی را بنویسید. وقتی چنین Promptهایی مینویسید، LLM قبل از پاسخ به هر Prompt شما در چت، مواردی را که در Promptهای سیستمی گفتهاید، در نظر میگیرد و براساس آنها پاسختان را آماده میکند.
اما چرا چنین نکاتی را در همان Prompt اول چت ننویسیم تا LLM برای ادامه مکالمه آنها را در نظر بگیرد؟ چون حافظه مکالمه LLMها محدود است و اگر چت طولانی شود، ممکن است مواردی را که در اولین Prompt چت نوشتهاید، فراموش کند و پاسخی به شما دهد که مطابق خواستهتان نیست. پس بهتر است موارد و خواستههایی را که از LLM میخواهید در کل چت رعایت کرده و در نظر بگیرد، به عنوان Prompt سیستمی به او اعلام کنید. قالب خروجیهایی که به LLM به شما تحویل میدهد، کاری که دقیقا از او میخواهید و بایدها و نبایدها و محدودهای که LLM باید در پاسخهایش لحاظ کند، میتواند در Prompt سیستمی ذکر شود.
۴) در دستهبندی دادهها و یافتن الگوها و روندهای موجود در آنها، LLMها دست بالا را دارند:
اگر با LLMها کار کرده باشید، احتمالا متوجه شدهاید که آنها در محاسبات ریاضی دقیق محدودیتهایی دارند و به همین خاطر برای تجزیه و تحلیلهای کمّی و دقیق آماری مناسب نیستند و بهتر است برای این کار سراغ افزونههای طراحیشده برای این کار (مثلا افزونه Chat-GPT برای تحلیل داده) یا کدهای نوشتهشده آماری بروید، اما اگر کار آماریتان از جنس کیفیست و میخواهید الگوها و روندهای موجود در دادهها را پیدا کرده و براساس آن، دادهها را به دستههای مختلف افراز کنید یا نیاز به تحلیل متن یا تحلیل روندهای تغییرات دادهها دارید، LLMها ابزار بسیار مناسبتر و بهینهتری به حساب میآیند.
برای نشان دادن مزیت LLMها در این زمینه، Sheila Teo در مقالهاش یک مثال جالب آورده. او دادههای مربوط به مشتریان یک کسبوکار را به یک LLM داده (مشخصاتی مانند سال تولد، وضعیت تأهل، درآمد، تعداد فرزندان، تاریخ آخرین خرید و مبلغ خریدهای مشتری) و از او خواسته، اولا این مشتریها را براساس مشخصاتشان در دستههای متمایزی جای دهد که هر مشتری فقط در یکی از آنها قرار گیرد، ثانیا توصیف کوتاهی از این دستهها را براساس مشخصات مشتریانشان ارائه دهد، ثالثا ایدههای برای بازاریابی مختص هریک از دستهها پیشنهاد دهد و رابعا توضیح دهد چرا این ایدهها برای این دسته از مشتریان موثر خواهد بود. او در این Prompt از چهار تکنیک زیر نیز بهره برده است:
الف) یک کار پیچیده را به مجموعهای از کارهای ساده تقسیم کنید.
ب) به خروجیهای مراحل میانی، در مراحل بعدی ارجاع دهید تا LLM دقیقتر منظورتان را بفهمد.
پ) قالب خروجی مدنظرتان را دقیقا مشخص کنید.
ت) شرح درخواستتان و مجموعه دادهها را در Propmtهای جداگانه به LLM بدهید، ترجیحا اول درخواستتان را به LLM بگویید و مطمئن شوید که دقیقا متوجه آن شده و سپس دادهها را در اختیارش قرار دهید. دلیلش هم احتمال از دست رفتن اطلاعات است، وقتی دادهها و درخواست در یک Prompt در کنار هم به LLM داده و Prompt خیلی طولانی میشود.
برای مطالعه دقیقتر و مفصلتر تکنیکها و استراتژیهای ذکرشده در بالا و مثالهایش، اصل مقاله را در مدیوم بخوانید.