تیپ #۶

پنجره متن، حافظه کاری عامل هوشمند شماست

پنجره متن یعنی بیشترین توکنی که مدل در یک فراخوانی می‌تواند ببیند و تولید کند، و همین تن‌ها حافظه‌ای است که agent در اختیار دارد. هر چیزی که مدل در آن لحظه می‌داند، از دستور سیستمی و شمای ابزارها تا اسناد بازیابی‌شده و کل گفتگو، باید داخل همین یک پنجره جا شود 🪟. وقتی پنجره پر شد ناچار باید چیزی حذف شود، پس از همان ابتدا برای توکن‌ها بودجه‌بندی کنید تا تاریخچه گفتگو بی‌حساب رشد نکند و کار را خراب نکند.

توضیح کامل‌تر

پنجره متن در واقع سقف توکن‌هایی است که مدل در هر فراخوانی می‌تواند پردازش کند و ورودی و خروجی هر دو در همین سقف حساب می‌شوند. سازوکار آن ساده اما بی‌رحم است: مدل هیچ حافظه‌ای بیرون از این پنجره ندارد، نه از پیام‌های قبلی چیزی نگه می‌دارد و نه بین دو فراخوانی مستقل، مگر اینکه خودتان آن اطلاعات را دوباره در پرامپت بگذارید. به همین دلیل در ساخت agentها پنجره متن هم بودجه است و هم گلوگاه، چون هر ابزار جدید، هر سند بازیابی‌شده و هر پیام تاریخچه بخشی از این بودجه را می‌خورد. نکته مهم دیگر این است که توجه مدل به توکن‌های میانه پنجره معمولاً ضعیف‌تر از ابتدا و انت‌های آن است، پدیده‌ای که به آن lost in the middle می‌گویند. برای مثال فرض کنید یک agent پشتیبانی مشتری دارید که خروجی چند جستجوی پایگاه دانش را به تاریخچه اضافه می‌کند؛ بعد از چند نوبت پاسخ‌ها بی‌ربط می‌شوند، نه چون مدل ضعیف است، بلکه چون اطلاعات کلیدی میان انبوه توکن‌های اضافی گم شده‌اند. راه‌حل عملی این است که تاریخچه را خلاصه کنید، خروجی ابزارها را کوتاه و ساخت‌یافته برگردانید و در صورت نیاز به‌جای انباشتن همه‌چیز در پرامپت از بازیابی بیرونی استفاده کنید.

مفاهیم پایه
← بازگشت به همهٔ نکته‌های روز