Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 34

"حدود سياق نماذج اللغة وتأثيرها على الوكيل"

Recommended resources

أهلاً بك مجدداً!

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

هذا الدرس سيجيب عن هذا السؤال تماماً. هدفنا اليوم هو تحقيق المخرج التعليمي التالي: فهم حدود سياق نماذج اللغة (Context Window) وتأثيرها على الوكيل. سوف نستكشف "الذاكرة العاملة" للنموذج اللغوي، ونفهم لماذا لها حدود، وكيف تؤثر هذه الحدود بشكل مباشر على قدرات وكيلنا.


1. ما هي "نافذة السياق" (Context Window)؟

في الدرس الماضي، جعلنا وكيلنا يتذكر المحادثة عن طريق إرسال السجل الكامل للتفاعلات مع كل طلب جديد. هذه "المساحة" التي نرسلها إلى النموذج اللغوي، والتي تحتوي على كل من تعليماتنا وسجل المحادثة، هي ما يُعرف بـ نافذة السياق (Context Window).

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

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

لفهم هذا المفهوم بشكل أعمق، لنبدأ بمشاهدة مقطع فيديو قصير يقدم تشبيهاً بسيطاً وواضحاً.

What is a Context Window? Unlocking LLM Secrets

يقدم هذا الفيديو من قناة IBM Technology مفهوماً ممتازاً لنافذة السياق باعتبارها 'الذاكرة العاملة' للنموذج اللغوي.

شاهد من البداية حتى الدقيقة 02:45. ركّز على كيفية تمثيل المحادثة بصرياً وكيف أن الأجزاء القديمة من المحادثة 'تخرج' من النافذة عندما تطول المحادثة.

كما رأيت، المشكلة الأساسية هي: عندما تتجاوز المحادثة حجم نافذة السياق، يبدأ النموذج في نسيان الأجزاء الأقدم منها، تماماً كما لو أن صديقك نسي فجأة ما كنتم تتحدثون عنه قبل عشر دقائق.

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



2. كيف تُقاس نافذة السياق؟ الرموز (Tokens)

في الفيديو السابق، استخدم المحاضر مصطلح "وحدات البلاه الدولية" على سبيل المزاح. لكن الوحدة الحقيقية لقياس نافذة السياق هي الرمز (Token).

الرمز ليس حرفاً وليس بالضرورة كلمة. إنه الوحدة الأساسية التي تقسم بها نماذج اللغة النص.

  • قد تكون الكلمات الشائعة مثل "the" أو "هو" رمزًا واحدًا.
  • قد يتم تقسيم الكلمات الأطول أو الأقل شيوعًا إلى عدة رموز. على سبيل المثال، قد يتم تقسيم كلمة "Tokenization" إلى "Token" و "ization".
  • حتى علامات الترقيم والمسافات يمكن أن تكون رموزًا.

What is a Context Window? Unlocking LLM Secrets

يعود نفس الفيديو من IBM ليشرح ما هي الرموز وكيف تعمل. هذا الجزء أساسي لفهم كيفية 'عد' النماذج للنص.

شاهد من الدقيقة 02:45 إلى 04:55. ركّز على الأمثلة التي يقدمها حول كيفية تقسيم الكلمات المختلفة إلى رموز.

كقاعدة عامة تقريبية للغة الإنجليزية، كل 100 كلمة تعادل حوالي 150 رمزًا. هذه النسبة تختلف في اللغة العربية، لكن المبدأ يظل كما هو: كل جزء من النص الذي نرسله، سواء كان من المستخدم أو من ردود الوكيل السابقة، يستهلك جزءاً من نافذة السياق المتاحة.

للتأكيد على هذه الفكرة باللغة العربية، يمكنك قراءة المقال التالي الذي يقدم شرحاً مبسطاً.

ذاكرة الذكاء الاصطناعي المؤقتة: لماذا تنسى النماذج اللغوية محادثاتك

يقدم هذا المقال من مدونة 'تميم' شرحاً مبسطاً ومباشراً لمفهوم نافذة السياق والرموز باللغة العربية.

اقرأ المقدمة وقسم 'كيف تعمل الذاكرة الرقمية؟'. لاحظ التشبيه البسيط في البداية وكيف يربط بين نافذة السياق، الرموز، ونسيان المعلومات القديمة.



3. التأثير العملي: ماذا يحدث عندما تمتلئ النافذة؟

الآن بعد أن فهمنا أن نافذة السياق لها حجم محدود ويُقاس بالرموز، دعنا نرى ما يحدث لوكيلنا الذي بنيناه في الدرس السابق (agent_v3.py) عندما تصل محادثته إلى هذا الحد.

استراتيجية الذاكرة التي استخدمناها (ConversationBufferMemory) تحتفظ بكل شيء. هذا يعني أنه مع كل سؤال وجواب، قائمة self.memory.history تزداد طولاً. عندما يصبح العدد الإجمالي للرموز في هذه القائمة أكبر من نافذة سياق النموذج (مثلاً، 4096 رمزًا لنموذج gpt-3.5-turbo)، سنواجه مشكلة.

ستقوم واجهة برمجة التطبيقات (API) برفض طلبنا لأنه كبير جدًا. ولكن حتى لو لم ترفضه، وقامت بعض الأنظمة بقص (Truncate) النص تلقائيًا، فسيحدث ما يلي:

  1. فقدان السياق: سيتم حذف أقدم الرسائل من الذاكرة. إذا كنت قد ذكرت معلومة مهمة في بداية المحادثة، فسيقوم الوكيل بنسيانها تمامًا.
  2. إجابات غير متسقة: قد يبدأ الوكيل في مناقضة نفسه أو تقديم معلومات لا تتناسب مع بداية الحوار.
  3. الهلوسة (Hallucination): عندما يفقد الوكيل السياق الحقيقي، قد يبدأ في "تخمين" أو اختلاق إجابات تبدو معقولة ولكنها غير صحيحة.
كيف تعمل نافذة السياق في نماذج اللغة الكبيرة
توضح هذه الصورة كيف تتراكم رسائل المستخدم وردود الوكيل داخل نافذة السياق مع كل دور في المحادثة. كلما زادت الأدوار، زاد استهلاك الرموز، واقتربنا من الحد الأقصى للنافذة.
اختبر فهمك!

في الدرس الماضي، طلبت من الوكيل أن يتذكر اسمك. بناءً على ما تعلمته الآن عن نافذة السياق، ماذا سيحدث لو أجريت محادثة طويلة جداً (آلاف الكلمات) مع الوكيل ثم سألته "ما هو اسمي؟"

أظهر الإجابة

على الأرجح، لن يتمكن الوكيل من الإجابة بشكل صحيح. بحلول الوقت الذي تطرح فيه السؤال، ستكون الرسالة الأصلية التي ذكرت فيها اسمك قد تم "دفعها" خارج نافذة السياق بسبب الرسائل الجديدة التي ملأت المساحة. سيجيب الوكيل على الأرجح بأنه لا يعرف اسمك.



4. لماذا لا تكون نافذة السياق لا نهائية؟

قد تتساءل: إذا كانت نافذة السياق المحدودة تسبب كل هذه المشاكل، فلماذا لا تجعلها الشركات المصنعة للنماذج أكبر بكثير أو حتى لا نهائية؟ الجواب يكمن في وجود مفاضلات (Trade-offs) مهمة.

What is the LLM's Context Window ?

يناقش هذا الفيديو من New Machina بوضوح سبب وجود حدود لنافذة السياق، ويستعرض بعض الاستراتيجيات للتعامل معها.

شاهد من الدقيقة 02:30 إلى النهاية. ركّز على النقاط التالية: لماذا النوافذ الأكبر تتطلب موارد حسابية أكثر، وما هي الاستراتيجيات التي يذكرها (مثل الحذف التدريجي والتقسيم) للتغلب على هذه الحدود.

باختصار، النوافذ الأكبر لها ثمن:

  • التكلفة الحسابية (Compute Cost): تزداد متطلبات المعالجة بشكل كبير مع زيادة حجم السياق. العلاقة ليست خطية؛ مضاعفة حجم السياق يمكن أن تزيد من الحسابات المطلوبة أربع مرات أو أكثر.
  • التكلفة المالية ($): استخدام النماذج عبر واجهات برمجة التطبيقات (APIs) يُسعّر عادةً بناءً على عدد الرموز المُدخلة والمُخرجة. نافذة سياق أكبر تعني إرسال المزيد من الرموز في كل مرة، مما يزيد التكلفة.
  • بطء الاستجابة: كلما زاد النص الذي يجب على النموذج تحليله، زاد الوقت الذي يستغرقه لتوليد استجابة.
  • تدهور الأداء: بشكل مفاجئ، النوافذ الكبيرة جدًا لا تضمن دائمًا أداءً أفضل. أظهرت الأبحاث أن النماذج تميل إلى إيلاء اهتمام أكبر للمعلومات في بداية ونهاية السياق، وقد "تضيع" أو تتجاهل المعلومات المهمة الموجودة في المنتصف.

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

الذكاء الاصطناعي التوليدي باللغة العربية

يقدم هذا المقال نظرة عملية على نماذج الذكاء الاصطناعي، بما في ذلك جدول يقارن أحجام نوافذ السياق.

اقرأ قسم 'حجم السياق (Context Window)' وركز على فائدتيه الرئيسيتين. ثم ألقِ نظرة على الجدول الذي يقارن أحجام نوافذ السياق بين النماذج المختلفة. لاحظ الفروقات الكبيرة بين النماذج.



خلاصة الدرس

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

أهم النقاط التي تعلمناها:

  • نافذة السياق هي الذاكرة العاملة للنموذج اللغوي، وهي محدودة الحجم.
  • تُقاس بالأرموز (Tokens)، وهي وحدات النص التي يفهمها النموذج.
  • عند تجاوز حد النافذة، يفقد الوكيل أقدم أجزاء المحادثة، مما يؤدي إلى نسيان السياق والهلوسة.
  • هناك حدود لحجم النافذة بسبب التكاليف الحسابية والمالية وتأثيرها على سرعة وأداء النموذج.
  • نظام الذاكرة الحالي في وكيلنا (ConversationBufferMemory) ساذج وعرضة لهذه المشكلة.

ماذا بعد؟

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

  • ذاكرة النافذة المنزلقة (Sliding Window Memory): تحتفظ فقط بآخر N من الرسائل.
  • ذاكرة التلخيص (Summary Memory): تستخدم النموذج نفسه لتلخيص أجزاء المحادثة القديمة، مما يوفر مساحة الرموز.

لكن قبل أن نتعمق في الذاكرة المتقدمة، يجب أن نوسع قدرات وكيلنا أولاً. حتى الآن، وكيلنا يستطيع التحدث فقط. في الوحدة التالية، سنبدأ في إعطائه "أدوات" (Tools) تمكّنه من تنفيذ إجراءات حقيقية، مثل البحث في الإنترنت أو قراءة الملفات. سنتعلم كيف يمكن للنموذج اللغوي أن يقرر بنفسه متى يستخدم هذه الأدوات، وذلك من خلال مفهوم يسمى "استدعاء الدوال" (Function Calling). استعد لجعل وكيلك فاعلاً وليس مجرد متحدث