مصاحبه دوازدهم در مجموعه AI: چگونه پرامپت را بهینه کنیم؟
بهینهسازی پرامپت (مهندسی پرامپت / بهینهسازی) یک مهارت کلیدی برای وادار کردن مدلهای زبانی بزرگ به "اطاعت" است، بهویژه در سیستمهای RAG، که مستقیماً تعیین میکند آیا مدل مایل است با وفاداری به محتوای بازیابیشده پاسخ دهد، از توهم جلوگیری کند و فرمت خروجی را رعایت کند.
یکم: اصول اصلی بهینهسازی پرامپت
- وضوح > پیچیدگی: دستورالعملهای ساده و مستقیم اغلب مؤثرتر از زنجیرههای تفکر فانتزی هستند.
- محدودیت کافی: به مدل بهوضوح بگویید "چه کاری میتواند انجام دهد و چه کاری نمیتواند".
- ارائه نمونه: Few-shot پایدارتر از Zero-shot است.
- قابل تأیید: از مدل بخواهید ارجاع یا سطح اطمینان را خروجی دهد تا ارزیابی downstream آسان شود.
- بهینهسازی تکراری: از یک خط پایه شروع کنید، هر بار فقط یک متغیر را تغییر دهید و نتایج را مقایسه کنید.
دوم: تکنیکهای خاص بهینهسازی (از آسان به دشوار)
1. تنظیم نقش (System Prompt)
شما یک دستیار حرفهای خدمات مشتری هستید. شما فقط میتوانید بر اساس [منابع] ارائه شده در زیر به سوالات پاسخ دهید.
اگر پاسخ را نمیدانید، مستقیماً بگویید "اطلاعات مرتبطی در منابع وجود ندارد" و خودتان چیزی نسازید.
- نقش: تعیین مرزها و لحن.
- نقاط بهینهسازی: لحن (حرفهای/صمیمی)، شدت محدودیت (سخت/نرم).
2. دستورالعمل واضح
❌ بد: "به سوال کاربر پاسخ دهید."
✅ خوب: "تنها بر اساس [منابع] زیر پاسخ دهید. اگر منابع شامل پاسخ نیست، بگویید 'من نمیتوانم به این سوال پاسخ دهم'."
3. کنترل فرمت خروجی
لطفاً در قالب JSON زیر خروجی دهید:
{
"answer": "پاسخ شما",
"confidence": "بالا/متوسط/پایین",
"sources": [1, 3]
}
- کاربرد: برای تجزیه، ارجاع و دیباگ downstream آسان.
4. نمونههای Few-shot (بسیار مؤثر)
مثال 1:
سوال: چند روز مرخصی سالانه وجود دارد؟
منابع: قوانین مرخصی سالانه: 1 سال کامل = 5 روز، 10 سال کامل = 10 روز.
پاسخ: 1 سال کامل = 5 روز، 10 سال کامل = 10 روز.
مثال 2:
سوال: اضافهکاری چگونه محاسبه میشود؟
منابع: اضافهکاری در روزهای کاری 1.5 برابر، در آخر هفته 2 برابر.
پاسخ: در روزهای کاری 1.5 برابر، در آخر هفته 2 برابر.
حالا پاسخ دهید:
سوال: {سوال کاربر}
منابع: {محتوای بازیابیشده}
پاسخ:
- نکته: نمونهها باید سطوح مختلف دشواری را پوشش دهند، ترجیحاً شامل یک مثال "نمیتوانم پاسخ دهم".
5. ارجاع اجباری
در انتهای پاسخ، شماره منبع را با [citation:X] مشخص کنید. مثال: "مرخصی سالانه 5 روز است[citation:1]."
اگر از چندین منبع استفاده میکنید، هر کدام را جداگانه مشخص کنید.
6. تنظیم آستانه امتناع از پاسخ
- محدودیت سخت: "اگر منبع کاملاً به سوال مربوط نیست، بگویید 'منبع مرتبط نیست'."
- محدودیت نرم: ترکیب با نمره اطمینان بازیابی، اگر از آستانه کمتر بود، به صورت خودکار به شاخه امتناع بروید.
7. زنجیره تفکر (Chain-of-Thought) برای استدلال چندمرحلهای
سوال: رئیس ژانگ سن چیست؟
مراحل: 1. ابتدا دپارتمان ژانگ سن را پیدا کنید. 2. سپس مسئول آن دپارتمان را پیدا کنید. 3. پاسخ نهایی را بدهید.
لطفاً پس از تفکر مرحلهای، خروجی دهید.
8. دستورالعملهای منفی
پاسخ را نسازید. از کلمات مبهم مانند "ممکن است" یا "شاید" استفاده نکنید. هیچ عددی خارج از منابع خروجی ندهید.
سوم: چگونه کیفیت پرامپت را ارزیابی کنیم؟
| شاخص | معنی | نحوه اندازهگیری |
|---|---|---|
| وفاداری | آیا پاسخ کاملاً بر اساس منبع است | انسانی یا Faithfulness در RAGAS |
| دقت امتناع | آیا در مواقع لازم از پاسخ امتناع میکند | محاسبه روی مجموعه آزمایشی بدون پاسخ |
| نرخ پیروی از قالب | آیا خروجی JSON/ارجاع را طبق دستور تولید میکند | تطبیق با regex |
| رضایت کاربر | آیا پاسخ مفید است | بازخورد آنلاین / تست A/B |
توصیه: یک مجموعه آزمایشی کوچک (20-50 مورد لبهای) آماده کنید، هر بار پس از تغییر پرامپت آن را اجرا کنید و تغییرات را ثبت کنید.
چهارم: دامهای رایج و جهتهای بهینهسازی
| مشکل | علت احتمالی | روش بهینهسازی |
|---|---|---|
| مدل منابع را نادیده میگیرد و خودش پاسخ میدهد | دستورالعمل به اندازه کافی قوی نیست | تغییر به "تنها بر اساس منابع زیر" و نمایش امتناع با few-shot |
| مدل همیشه میگوید "نمیدانم" | آستانه امتناع بیش از حد بالا | کاهش آستانه یا بررسی کیفیت بازیابی |
| فرمت خروجی بهم ریخته، مطابق JSON نیست | دستورالعمل واضح نیست | اضافه کردن مثال دقیق قالب، یا استفاده از function calling |
| پاسخ خیلی طولانی/کوتاه | طول مشخص نشده | "در بیش از 3 جمله پاسخ دهید" |
| استدلال چندمرحلهای اشتباه میکند | توانایی استدلال مدل کافی نیست | درخواست نشان دادن گامهای استدلال، یا استفاده از مدل قویتر |
| توهم اعداد/تاریخ | مدل به دانش خود متکی است | تأکید "از هیچ عددی که به خاطر دارید استفاده نکنید، فقط به منابع نگاه کنید" |
评论
暂无已展示的评论。
发表评论(匿名)