0Pricing
AI Agents · درس

الذاكرة قصيرة الأمد في نافذة السياق

خزّن سجل المحادثة في مصفوفة messages — أبسط أنواع الذاكرة، مع التعرّف على حدودها الصارمة.

الذاكرة قصيرة الأمد في نافذة السياق درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

الذاكرة مجرد قائمة

"ذاكرة" نموذج اللغة الكبير على نمط المحادثة هي قائمة messages التي ترسلونها مع كل استدعاء. النموذج عديم الحالة — ولا يعرف شيئًا بين الطلبات.

"الذاكرة قصيرة الأمد" = كل ما يوجد في تلك القائمة حاليًا.

لماذا ينجح ذلك

تضيفون كل رسالة من المستخدم وكل استجابة من المساعد. وعندما تطرحون السؤال الثالث، يرى النموذج ما يلي:

messages = [
  {'role': 'system', 'content': 'You are helpful.'},
  {'role': 'user',   'content': 'My name is Alice.'},
  {'role': 'assistant', 'content': 'Nice to meet you, Alice.'},
  {'role': 'user',   'content': 'What is my name?'}
]
# Model replies: 'Alice'
for m in messages:
    print(f"{m['role']}: {m['content']}")
print("Model replies: Alice")

حدود نافذة السياق

لكل نموذج نافذة سياق محددة — وهي الحد الأقصى لعدد الرموز في المدخلات والمخرجات مجتمعة.

  • gpt-4o-mini: 128k رمز
  • claude-sonnet-4-5: 200k رمز
  • gemini-1.5-pro: 2M رمز

إذا تجاوزتم هذا الحد، فستُرجع API خطأً.

تكلفة الرموز خطية

تدفعون مقابل كل رمز في كل جولة. فمحادثة من 30 جولة، تحتوي كل جولة منها على 500 رمز، تكلفكم 15,000 رمز إدخال في الاستدعاء الأخير وحده — إذ يُعاد تمرير السجل بأكمله.

تصبح الجلسات الطويلة مكلفة بسرعة.

فقدان المعلومات في المنتصف

حتى مع سياق بحجم 200k، تولي النماذج اهتمامًا أقل للمحتوى الموجود في منتصف المطالبة الطويلة. يجب وضع المعلومات المهمة في البداية (النظام) أو النهاية (أحدث رسالة من المستخدم).

الاقتطاع باستخدام نافذة منزلقة

أبسط أساليب إدارة الذاكرة — الاحتفاظ برسالة النظام وآخر N من الجولات:

MAX_TURNS = 20  # 10 user + 10 assistant

def trim(messages):
    system = messages[0]
    rest = messages[1:]
    return [system] + rest[-MAX_TURNS:]

demo_messages = [{'role': 'system', 'content': 'sys'}] + [
    {'role': 'user' if i % 2 == 0 else 'assistant', 'content': f'msg {i}'} for i in range(30)
]
trimmed = trim(demo_messages)
print(f"Original messages: {len(demo_messages)}")
print(f"Trimmed messages: {len(trimmed)}")

التقليص حسب عدد الرموز

أسلوب أكثر دقة: قلّصوا حسب عدد الرموز، لا حسب عدد الجولات:

import tiktoken
enc = tiktoken.encoding_for_model('gpt-4o-mini')

def trim_by_tokens(messages, max_tokens=8000):
    out = [messages[0]]   # keep system
    tokens_left = max_tokens - len(enc.encode(messages[0]['content']))
    # walk backwards from newest
    for m in reversed(messages[1:]):
        cost = len(enc.encode(m['content'])) + 4
        if cost > tokens_left:
            break
        out.insert(1, m)
        tokens_left -= cost
    return out

الحفاظ على أزواج الرسائل معًا

يؤدي اقتطاع السياق في منتصف الزوج إلى ترك استدعاءات أدوات يتيمة. احرص دائمًا على اقتطاع أدوار المستخدم والمساعد معًا:

# Bad: cuts after assistant call but before tool result
# Good: trim whole turns (user + all responses)
print("Bad: cuts after assistant call but before tool result")
print("Good: trim whole turns (user + all responses)")

متى لا تكفي الذاكرة قصيرة الأمد

تفشل الذاكرة قصيرة الأمد عندما:

  • تتجاوز المحادثة 20 جولة
  • يعود المستخدم في اليوم التالي متوقعًا تذكّر ما سبق
  • يتشارك عدة مستخدمين الوكيل نفسه

تحتاج إلى استراتيجية مختلفة — راجع الدروس التالية.

يبقى prompt النظام مثبتًا

يجب أن تكون رسالة النظام دائمًا العنصر الأول. لا تقتطعها أبدًا؛ فهي تتضمن الهوية والقواعد وأوصاف الأدوات.

تثبيت تحديثات النظام الحديثة

إذا أضفت الملاحظة النظامية «تذكّر أن المستخدم يفضّل وحدات سلسيوس»، فثبّتها في المقدمة مثل prompt النظام الأصلي:

SYSTEM_PROMPT = 'You are a helpful assistant.'
messages = [
    {'role': 'system', 'content': SYSTEM_PROMPT},
    {'role': 'system', 'content': 'USER PREFERENCE: Celsius units'},
    {'role': 'user', 'content': 'What is the weather in Paris?'},
    {'role': 'assistant', 'content': 'It is 21C and sunny.'},
]
print('Pinned system messages:')
for m in messages:
    if m['role'] == 'system':
        print(' -', m['content'])
print('Total messages:', len(messages))

حدود السياق

ماذا يحدث عند تجاوز نافذة سياق النموذج؟

مراجعة

الذاكرة قصيرة الأمد = قائمة الرسائل. أدرها باقتطاع نافذة منزلقة أو باقتطاع قائم على عدد الرموز، وثبّت رسالة النظام، وتقبّل أن التكلفة تزداد مع عدد الجولات.

الأسئلة الشائعة

هل درس «الذاكرة قصيرة الأمد في نافذة السياق» مجاني؟

نعم — نص درس «الذاكرة قصيرة الأمد في نافذة السياق» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «الذاكرة قصيرة الأمد في نافذة السياق»؟

خزّن سجل المحادثة في مصفوفة messages — أبسط أنواع الذاكرة، مع التعرّف على حدودها الصارمة. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «الذاكرة قصيرة الأمد في نافذة السياق»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

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

جميع الدروس في هذه الدورة

  1. الذاكرة قصيرة الأمد في نافذة السياق
  2. لماذا لا تتوسع السياقات الطويلة
  3. التلخيص بوصفه ضغطًا
  4. مخازن الذاكرة البسيطة (مفتاح-قيمة)
← العودة إلى AI Agents