AI Agents

تطبيق استراتيجيات اضمحلال الذاكرة الديناميكي والتلخيص للحفاظ على سياق الوكيل على المدى الطويل

مع تحول نماذج اللغات الكبيرة (LLMs) إلى العمود الفقري للوكلاء المستقلين، يظل إدارة نافذة السياق أحد أكبر التحديات الهندسية المستمرة. بينما تدعم النماذج الحديثة سياقات أكبر بشكل متزايد، فإن مجرد تغذية التاريخ المتنامي باستمرار في الطلب مكلفة حسابياً وغالباً ما تؤدي إلى ظاهرة "الضياع في المنتصف"، حيث تتشوه التفاصيل الحاسمة بسبب الضوضاء. لبناء وكلاء ذوي حالة فعلية، يجب علينا التجاوز مجرد الإلحاق البسيط وتنفيذ أنظمة إدارة ذاكرة ذكية. يستكشف هذا المنشور استراتيجيتين حاسمتين: اضمحلال الذاكرة الديناميكي والتلخيص المتكرر.

فهم اضمحلال الذاكرة الديناميكي

الذاكرة البشرية ليست ثابتة؛ فهي تتلاشى مع مرور الوقت ما لم يتم تعزيزها. وبالمثل، في هندسة معماريات وكلاء الذكاء الاصطناعي، لا تحتفظ كل قطعة من المعلومات السابقة بنفس الأهمية. غالباً ما تكون المحادثة التي حدثت قبل ثلاث ساعات أقل صلة من تلك التي حدثت قبل ثلاث دقائق. يتضمن اضمحلال الذاكرة الديناميكي تعيين "عمر نصفي" أو عامل اضمحلال لكل عنصر ذاكرة، مما يقلل من تأثيره مع مرور الوقت.

بدلاً من التعامل مع جميع متجهات السياق بالتساوي، يمكننا تنفيذ نظام تقييم حيث يتم وزن الذكريات القديمة بأقل كثافة. يتيح هذا للوكيل إعطاء الأولوية للتفاعلات الأخيرة مع الاحتفاظ بظل خافت للأحداث الماضية، مما يتيح استدلالاً طويل المدى دقيق دون تضخيم نافذة السياق.

تنفيذ الاضمحلال في بايثون

يُعد المثال المبسط أدناه كيفية حساب درجة اضمحلال لعناصر الذاكرة. نستخدم دالة الاضمحلال الأسي، وهي قياسية في تحليل السلاسل الزمنية، لتحديد درجة الصلة.

import time
from typing import List, Dict

class MemoryManager:
    def __init__(self, decay_rate: float = 0.99):
        self.decay_rate = decay_rate
        self.memory_store = []

    def add_memory(self, content: str, timestamp: float = None):
        if timestamp is None:
            timestamp = time.time()
        self.memory_store.append({
            "content": content,
            "timestamp": timestamp,
            "score": 1.0
        })

    def get_context(self) -> str:
        current_time = time.time()
        context_parts = []
        
        for mem in self.memory_store:
            # Calculate decay score
            time_diff = current_time - mem["timestamp"]
            # Exponential decay: score = initial_score * (decay_rate ^ time_diff)
            decayed_score = mem["score"] * (self.decay_rate ** time_diff)
            mem["score"] = decayed_score
            
            if decayed_score > 0.1:  # Threshold to keep significant memories
                context_parts.append(f"[Score: {decayed_score:.2f}] {mem['content']}")
        
        return "\n".join(context_parts)

# Example Usage
manager = MemoryManager()
manager.add_memory("User said hello")
time.sleep(1) # Simulate time passing
manager.add_memory("User asked a complex question")
print(manager.get_context())

التلخيص المتكرر للحفاظ على المدى الطويل

بينما يدير الاضمحلال الصلة، فإنه لا يحل مشكلة الحجم. عندما تصبح مخزن الذاكرة كبيراً جداً، حتى مع الاضمحلال، قد يتجاوز السياق حدود الرموز. هنا يبرز التلخيص المتكرر. بدلاً من حذف الذكريات القديمة، نقوم بضغطها إلى ملخصات موجزة تلتقط الجوهر الدلالي للتفاعلات الماضية.

من خلال استدعاء نموذج لغوي كبير بشكل دوري لتلخيص أقسام الذاكرة الأقدم أو الأقل صلة، يمكننا استبدال السجلات المفصلة بكبسولات كثيفة وغنية بالمعلومات. تضمن هذه الاستراتيجية، التي تُعرف غالباً بـ "تكثيف الذاكرة"، بقاء قدرة الوكيل على الإجابة عن الأسئلة المتعلقة بالأحداث الماضية دون حمل التاريخ الخام بأكمله.

يتطلب التنفيذ الفعال حلقة تغذية راجعة: عند وصول معلومات جديدة، يتحقق النظام مما إذا كان مخزن الذاكرة يتجاوز عتبة معينة. إذا فعل ذلك، يتم تشغيل محرك التلخيص لدمج الإدخالات المكررة. على سبيل المثال، يمكن تلخيص ثلاث رسائل منفصلة حول "طلب البيتزا" في ملخص واحد: "طلب المستخدم بيتزا بالبيبروني الساعة 7 مساءً".

الخاتمة

بناء وكلاء ذكاء اصطناعي قويين يتطلب أكثر من مجرد ربط نموذج لغوي كبير بقاعدة بيانات. إنه يتطلب نهجاً متطوراً لإدارة الحالة. من خلال تنفيذ اضمحلال الذاكرة الديناميكي، نضمن إعطاء الأولوية للمعلومات العاجلة من قبل الوكلاء، محاكاةً لمدى الانتباه البشري. ومن خلال طبقة التلخيص المتكرر فوق ذلك، نحل مشكلة القابلية للتوسع، مما يسمح للوكلاء بالعمل على فترات ممتدة دون الوصول إلى حدود الرموز أو تكبد تأخير زمني مفرط.

بالنسبة للمطورين الذين يتطلعون إلى تعزيز أطر عمل الوكلاء الخاصة بهم، يجب أن يكون تجربة هذه الأنماط أولوية. ابدأ بالاضمحلال الأسي البسيط وأضف طبقات التلخيص تدريجياً مع نمو احتياجات سياق التطبيق الخاص بك. ستكون النتيجة وكلاء ليسوا أذكى فحسب، بل أكثر كفاءة وفعالية من حيث التكلفة.

Share: