از انباشتن حافظه عامل در پرامپت دست بردارید

بسیاری از توسعه‌دهندگان حلقه‌های عامل (agent loops) را با پیوست کردن همه چیز به پرامپت بعدی می‌سازند.

شما مشاهدات قبلی، فراخوانی‌های ابزار (tool calls) و ردپاهای استدلال را اضافه می‌کنید. مدام داده‌ها را اضافه می‌کنید تا زمانی که پرامپت به یک کشوی پر از زباله تبدیل شود. مدل موارد بیشتری را می‌بیند، اما شما کنترل خود را از دست می‌دهید. دیگر نمی‌دانید کدام بخش از حافظه باعث یک تصمیم خاص شده است.

مقاله جدیدی به نام AgenticSTS مسیر متفاوتی را پیشنهاد می‌دهد. این مقاله با حافظه به عنوان یک رابط (interface) برخورد می‌کند، نه رقابتی برای داشتن بزرگترین پنجره کانتکست (context window).

این مقاله از بازی Slay the Spire 2 به عنوان محیط آزمایش استفاده می‌کند. این محیط نیازمند صدها تصمیم استراتژیک است و یک چت‌بات ساده نیست.

ایده اصلی این است: حافظه قراردادی است درباره اینکه یک تصمیم در آینده مجاز به دیدن چه چیزهایی است.

نویسندگان به جای استفاده از متن‌های خام (transcripts)، پرامپت‌های تازه‌ای را با استفاده از پنج لایه مشخص ترکیب می‌کنند:

  • دستورالعمل‌های پروتکل ثابت
  • طرحواره‌های (schemas) وضعیت فعلی و عملیات
  • قوانین بازی بازیابی‌شده
  • خلاصه‌های مربوط به اجراهای قبلی
  • مهارت‌های استراتژیک فعال‌شده

این ساختار همه چیز را تغییر می‌دهد. شما می‌توانید هر لایه را بازرسی، منجمد یا غیرفعال کنید. شما حافظه را از یک توده داده به شواهدی منتخب تبدیل می‌کنید.

بسیاری از شکست‌های عامل‌ها در محیط عملیاتی، شکستِ مدل نیستند، بلکه شکستِ کانتکست هستند. عامل، وضعیت قدیمی را با وضعیت جدید مخلوط می‌کند یا بازتاب‌های (reflections) قدیمی را به جلو می‌برد. اگر تنها سیاست شما اضافه کردن متن بیشتر باشد، عیب‌یابی (debugging) شبیه باستان‌شناسی خواهد بود.

یک رابط حافظه تایپ‌شده (typed memory interface) چیزی برای مقایسه در اختیار شما قرار می‌دهد.

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

برای ساخت عامل‌های بهتر، این الگوها را دنبال کنید:

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

اگر نتوانید یک لایه حافظه را خاموش کنید، نمی‌دانید که آیا واقعاً کمک می‌کند یا خیر. شما فقط می‌دانید که کل آن توده گاهی اوقات کار می‌کند.

از برخورد با حافظه عامل به عنوان یک «لایه مبتنی بر حس و حال» (vibes layer) خودداری کنید. به سمت سیستمی حرکت کنید که در آن دقیقاً بدانید چه چیزی وارد تصمیم بعدی می‌شود، از کجا آمده و چگونه می‌توان آن را غیرفعال کرد.

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

Source: https://dev.to/komo/stop-dumping-agent-memory-into-the-prompt-58ka

Optional learning community: https://t.me/GyaanSetuAi