ریویژن پرامپتینگ: پرامپت رو از اول اجرا نکن
خلاصهٔ کاملتر
تو این مقاله اومده که ما به دو شکل با مدلهای زبانی کار میکنیم: پرامپت موردی، که آدم دستی و برای هر بار یه دستور خاص مینویسه، و پرامپت صنعتی، که یه دستور ثابت بهصورت خودکار روی دادههای مختلف اجرا میشه — مثل استخراج اطلاعات ساختاریافته از فاکتورها تو یه خط لولهٔ حسابداری، یا ترجمهٔ صفحات مستندات موقع انتشار نسخهٔ جدید.
مشکل از جایی شروع میشه که ورودی آپدیت میشه. کار متداول اینه که همون دستور رو از اول روی ورودی جدید اجرا کنن، ولی این دو تا ایراد داره: مدلها قطعی نیستن، پس خروجی جدید فراتر از چیزی که تغییر ورودی ایجاب میکنه با خروجی قبلی فرق میکنه؛ و با اینکه فقط بخشی از ورودی عوض شده، کل خروجی از نو تولید میشه و هزینهش اندازهٔ دفعهٔ اوله.
ایدهٔ ریویژن پرامپتینگ اینه که بهجای ورودی و خروجی کامل، روی بازنگریها کار کنیم. پرامپت جدید به مدل میگه دستور روی ورودی قبلی چه خروجیای داده، بعد diff بین ورودی قبلی و جدید رو میده و ازش یه پچ برای خروجی میخواد. مثال مقاله ترجمهٔ صفحهٔ یه دوچرخهٔ برقیه: وقتی برد باتری از ۸۰ به ۱۰۰ کیلومتر میرسه، مدل بهجای ترجمهٔ دوبارهٔ کل صفحه فقط همون یه خط رو پچ میکنه.
دلیل کار کردنش هم روشنه. چون فقط تفاوت ورودی به مدل داده میشه، پچ هم محدود به همون تغییرات میمونه و بقیهٔ خروجی مو به مو با نسخهٔ قبلی یکی میمونه. از طرف دیگه خروجی قبلی بهعنوان بخشی از پرامپت برمیگرده تو ورودی، پس مدل فقط یه پچ کوتاه تولید میکنه؛ چون زمان پردازش تقریباً با طول خروجی رابطه داره، بیشتر اون زمان حذف میشه و هزینهٔ توکن خروجی به توکن ورودیِ خیلی ارزونتر تبدیل میشه.
برای فرمت diff و پچ، نویسنده ابزار diff استاندارد POSIX رو گزینهٔ عمومی خوبی میدونه و برای خروجیهای JSON فرمت JSON Patch رو پیشنهاد میکنه. میزان صرفهجویی هم به اندازهٔ تغییرات ورودی و حساسیت خروجی به اون تغییرات بستگی داره؛ به گفتهٔ نویسنده تو پرامپتهای صنعتی خودشون این روش حدود ۸۰ درصد زمان و ۶۵ درصد هزینه رو کم کرده. اگه اجرای دوباره چند دقیقه بعد از اجرای اول باشه، کش پرامپت هم بخشی از هزینهٔ ورودی رو پایین میآره.
نکات کلیدی:
- ریویژن پرامپتینگ مخصوص پرامپتهای صنعتیه: یه دستور ثابت که مدام روی داده اجرا میشه
- بهجای اجرای دوباره، ورودی و خروجی قبلی بههمراه diff به مدل داده میشه و مدل یه پچ میسازه
- بخشهای تغییرنکردهٔ خروجی دقیقاً مثل قبل میمونن، پس ناسازگاری بین نسخهها از بین میره
- بیشتر توکنها از سمت خروجی به سمت ورودیِ ارزونتر منتقل میشن و زمان پردازش خیلی کم میشه
- فرمت پیشنهادی: diff استاندارد POSIX برای متن و JSON Patch برای خروجیهای JSON




