اصول Prompt Engineering: یک ورودی واژهنامه عملی
توضیح روشن و بدون پرتوی از مبانی prompt engineering، با مثالها و تکنیکهایی که میتوانید فوراً استفاده کنید.
Prompt engineering عمل نوشتن متنی است که مدل زبانی را وادار میکند تا خروجی مورد نظر شما را تولید کند. جایی بین نوشتن و debugging قرار میگیرد: شما به معنای سنتی کدنویسی نمیکنید، اما فرضیاتها را درباره نحوه تفسیر مدل از دستورات آزمایش میکنید و در صورت اشتباه تکرار میکنید.
یک prompt در واقع چیست
Prompt همه چیزی است که قبل از اینکه مدل پاسخ تولید کند به آن ارسال میکنید — دستورات، زمینه، مثالها و سوال یا کار واقعی. اکثر مدلهای چت مدرن این را به نقشها تقسیم میکنند: یک پیام سیستم (رفتار و محدودیتها را تعیین میکند)، پیامهای کاربر (درخواست واقعی) و گاهی پیامهای دستیار (نوبتهای قبلی یا مثالها). اگر از یک API مثل OpenAI یا Anthropic استفاده میکنید، اینها را به صورت صریح در کد تعیین میکنید. اگر از یک رابط چت استفاده میکنید، system prompt اغلب پنهان است یا در ابتدای مکالمه یکبار تعیین میشود.
چرا همان سوال پاسخهای متفاوت میدهد
مدلهای زبانی token بعدی را بر اساس همه چیزی که قبل از آن آمده است پیشبینی میکنند، از جمله فرمولبندی شما، ترتیب کلمات و حتی علامتگذاری. اگر بپرسید "Recursion را توضیح بده" پاسخ عمومی کتابدرسی دریافت میکنید. اگر بپرسید "Recursion را برای یک توسعهدهنده جوان توضیح بده که loops را میفهمد اما recursion را نمیفهمد، با یک مثال Python منفرد که base case و recursive case را شامل شود" چیز بسیار مفیدتری دریافت میکنید. دقت ورودی شما مستقیماً دقت خروجی را شکل میدهد. این بینشی است که مبتدیان نیاز دارند بفهمند: مدل خیالخواهی شما را نمیخواند، بلکه pattern-matching علیه کلمات شما انجام میدهد.
تکنیکهای اساسی که ابتدا یادگیری شایسته است
Zero-shot prompting یعنی پرسیدن مستقیم بدون مثال: "یک regex بنویس که شمارههای تلفن ایالات متحده را مطابقت دهد." این برای کارهای معمول و خوبتعریفشده خوب کار میکند.
Few-shot prompting یعنی دادن یک یا چند مثال از الگوی input/output که میخواهید به مدل پیش از اینکه از آن بخواهید الگو را ادامه دهد. اگر میخواهید مدل بلیتهای پشتیبانی را به دستهبندی کند، نشان دادن سه مثال برچسبگذاریشده ابتدا نتایج بسیار منسجمتری تولید میکند تا توضیح دستهها به تنهایی.
Chain-of-thought prompting از مدل میخواهد که قبل از دادن پاسخ نهایی گام به گام استدلال کند، اغلب با اضافه کردن حرفی "فکر کن گام به گام" یا با خواستن اینکه کار خود را نشان دهد. این برای ریاضی، منطق و کارهای چندمرحلهای کمک میکند، اگرچه استفاده از token و طول پاسخ را نیز افزایش میدهد.
Role prompting یک شخصیت به مدل اختصاص میدهد — "شما یک مهندس امنیتی ارشد هستید که این کد را برای آسیبپذیریها بررسی میکند" — که میتواند تن، واژگان و نوع جزئیات را تغییر دهد که آن را اولویت میدهد. این تواناییهای جدیدی را به مدل اعطا نمیکند، اما سبک خروجی آن را تثبیت میکند.
ساختار بیشتر از هوشمندی اهمیت دارد
مبتدیان اغلب فرض میکنند که prompt engineering درباره یافتن یک عبارت جادویی است. در عمل، ساختار تقریباً همیشه هوشمندی را شکست میدهد. prompt خود را به بخشهای واضح تقسیم کنید: زمینه، کار، محدودیتها و فرمت. برای مثال:
Context: شما یک برنامه Python Flask را برای یک حسابرسی امنیتی بررسی میکنید.
Task: ریسکهای SQL injection را در کد زیر شناسایی کنید.
Constraints: فقط مسائل در مسیرهای /login و /search را پرچم کنید.
Format: یک فهرست شمارهگذاریشده با شماره خط و یک توضیح یکجملاتی بازگردانید.
این نوع فرمتبندی صریح ابهام را کاهش میدهد و خروجیها را در صورتی که promptها را در یک اسکریپت کنار هم قرار میدهید تحلیل کردن آسانتر میکند.
اشتباهات معمول در ابتدا
اشتباه مکرر، ابهام است که با اختصار پنهان شده — پرسیدن "این را بهتر کن" بدون تعریف اینکه "بهتر" به چه معنی است (سریعتر؟ خوانتر؟ ایمنتر؟). دیگری آن است که یک prompt را با پنج کار نامربوط پُر کنید، که تمایل دارد پاسخ سطحی را برای هر پنجتا تولید کند به جای یک پاسخ محکم برای یکی. مبتدیان همچنین فراموش میکنند که مدلها بین تماسهای API جداگانه حافظه ندارند مگر اینکه به صورت صریح تاریخ مکالمه قبلی را دوباره ارسال کنید، که زمانی که چیزی غیرایستا میسازید مشکلساز است.
تست و تکرار مثل یک مهندس
Promptها را مثل کدی برخورد کنید که نسخهبندی و تست میکنید، نه متن یکباری که دور انداختهاید. یک سجل از تغییرات prompt و خروجیهای آن ها را نگه دارید، به خصوص برای هر چیزی که در تولید دوباره استفاده میکنید، مثل یک ربات پشتیبانی مشتری یا یک دستیار بررسی کد. تغییرات کوچک الفاظ — "summarize" در مقابل "summarize در دقیقاً سه نقطه" — میتواند نتایج قابل توجهی تولید کند، و تنها راه برای دانستن آنچه برای حالت استفاده شما کار میکند اجرای مقایسه خود است تا فرض نکنید.
این در ساخت چیزهای واقعی کجا جا میگیرد
هنگامی که promptها قابل اعتماد شوند، مرحله بعدی معمولاً استفاده برنامهای است: تماس با یک API با تنظیمات temperature و max_tokens برای کار خود، اضافه کردن منطق مجدد برای خروجیهای نادرست و اعتبارسنجی پاسخها قبل از رسیدن به کاربر. این جایی است که prompt engineering شروع به همپوشانی با منطق مهندسی نرمافزار منظم میکند، و یک نقطه خوب برای انتقال از آزمایش در یک پنجره چت به نوشتن اسکریپتهای واقعی است.
اگر میخواهید جلوتر بروید، بخشهای Korra Studio را درباره کار با API های LLM در Python و در مورد ساخت ابزارهای کوچک تحت کنترل AI از ابتدا بررسی کنید.
با کمک هوش مصنوعی نوشتهشده، بازبینی و منتشرشده توسط Michal Pilch (CISSP)، Korra Studio.
این یکی از یادداشتهای پایگاه دانش Korra Studio است — پلتفرم هر موضوع را با مربی یکبهیک جفت میکند.
شروع رایگانarrow_forward