مدل چیزی به خاطر نمیسپارد. شما به خاطر میسپارید.
LLMها حافظه ندارند.
قبلاً فکر میکردم هر چت، زمینه (context) خودش را ذخیره میکند. فکر میکردم مدل بهطور خودکار کلمات قبلی ما را به خاطر میسپارد. اشتباه میکردم.
Messages API بدون وضعیت (stateless) است. مدل فقط آنچه را که در درخواست فعلی میفرستید میداند. اگر میخواهید یک گفتگو داشته باشید، باید هر بار تمام تاریخچه را دوباره به مدل ارسال کنید.
حافظه شما صرفاً آرایهای از پیامهاست.
وقتی یک چت میسازید، این آرایه را مدیریت میکنید. ساختار آن به این صورت است:
• کاربر: سلام، Claude • دستیار: سلام! چطور میتوانم کمک کنم؟ • کاربر: میتوانی LLMها را توصیف کنی؟
هر بار که سوال جدیدی میپرسید، پیام جدید را به آن لیست اضافه (append) میکنید و کل لیست را به API میفرستید.
من این را با دوری از SDKها یاد گرفتم. اکثر توسعهدهندگان از ابزارهایی مانند Anthropic SDK استفاده میکنند. این ابزارها پیچیدگی را پنهان میکنند. آنها عملیات تلاش مجدد (retries) و هدرها (headers) را برای شما مدیریت میکنند.
من در عوض تصمیم گرفتم از raw fetch استفاده کنم. این کار مرا مجبور کرد تا هدرها و بدنه درخواست (request body) را بهصورت دستی مدیریت کنم. این کار لایه انتزاع (abstraction) را حذف کرد. من دقیقاً دیدم که دادهها چگونه جابهجا میشوند.
این مفهوم، زیربنای همهچیز است. اگر میخواهید سیستمهای پیشرفتهای بسازید، باید این آرایه را درک کنید. استراتژیهایی مانند RAG یا پنجرههای لغزان (sliding windows) همگی با نحوه مدیریت این لیست پیامها شروع میشوند.
وقتی بر مدیریت تاریخچه مسلط شدید، میتوانید به سراغ استفاده از ابزار (tool use) بروید. این کار به مدل اجازه میدهد تا وظایف را اجرا کرده و توابع مناسب برای اجرا را انتخاب کند.
زمینه خود را کنترل کنید. مدل خود را کنترل کنید.
منبع: https://dev.to/marcochavezco/the-model-doesnt-remember-you-do-3mmk
انجمن یادگیری اختیاری: https://t.me/GyaanSetuAi