لماذا ينسى شات جي بي تي في المحادثات الطويلة؟ وكيف تدير السياق
7 دقائق تقريبًا
في الدرس الأول عرفنا إن الـContext هو المعلومات المتاحة لـChatGPT وقت تنفيذ المهمة، لكن دلوقتي محتاجين نفهمه بشكل أعمق، لأن جزء كبير جدًا من مشاكل الاستخدام المتقدم مش سببه إن ChatGPT "نسي"، لكن إن السياق نفسه بقى غير منظم أو متضارب.
أنت ممكن تدي النموذج معلومات كثيرة جدًا، وتكون النتيجة أسوأ من شخص أعطاه خمس معلومات فقط، لأن الخمس معلومات كانت هي اللي تغير القرار فعلًا.
الـContext مش مخزن، هو بيئة قرار
أبسط طريقة تفهم بها الـContext إنك تعتبره بيئة القرار اللي ChatGPT شايفها وهو بيجاوب.
لو داخل البيئة دي موجود هدف واضح، نسخة معتمدة من الملف، مجموعة قواعد غير متعارضة، ومعلومات محدثة، فرص النتيجة الصحيحة تزيد.
لو نفس البيئة فيها ثلاث نسخ من نفس الملف، خمس تعليمات تغيرت مع الوقت، نقاشات جانبية، وقرار قديم لم يتم إلغاؤه بوضوح، النموذج قد يختار معلومة صحيحة تاريخيًا لكنها لم تعد صحيحة بالنسبة للحالة الحالية.
المشكلة هنا مش دايمًا "ذاكرة ضعيفة"، أحيانًا المشكلة إنك قدمت له واقعًا غير مرتب.
Relevant Context وContext Noise
Relevant Context هو أي معلومة لو شلتها ممكن القرار يتغير أو تقل جودة التنفيذ. Context Noise هو معلومات موجودة لكن تأثيرها ضعيف، أو لا علاقة لها بالمهمة الحالية، أو أصبحت قديمة.
تخيل إنك عايز ChatGPT يراجع جدول ميزانية لرحلة. الميزانية الكلية، عدد الأشخاص، العملات، وتكاليف الفنادق معلومات مهمة. قصة إنك زرت نفس البلد قبل عشر سنوات غالبًا مش مهمة للمراجعة الحسابية.
المشكلة إن المستخدم أحيانًا يظن إن "أديله كل حاجة أحسن"، لكن كل معلومة إضافية بتنافس غيرها على الانتباه داخل المهمة.
وده لا يعني إنك تخبي المعلومات، لكن يعني إنك تنظّمها وتعرف ما الذي يحتاجه القرار الحالي.
أول نوع توه: تضارب التعليمات
ده من أكتر الأسباب وضوحًا. في بداية المحادثة قلت: خلي الإجابات قصيرة. بعدين في رسالة لاحقة قلت: اشرح بالتفصيل وما تختصرش. بعدين طلبت ردًا في 200 كلمة.
دلوقتي فيه ثلاث إشارات مختلفة. النموذج هيحاول يوازن بينها، لكنه مش بالضرورة يعرف أي قاعدة تقصد إنها أصبحت المرجع الحالي إلا لو قلت ده بوضوح.
لما تغير قاعدة، ما تكتفيش بإضافة قاعدة جديدة. قول إن القاعدة القديمة أصبحت ملغاة أو إن القاعدة الجديدة لها الأولوية.
مثلًا: "من هنا فصاعدًا، تجاهل قاعدة الاختصار السابقة. في هذا المشروع أريد شرحًا كاملًا، والاختصار يكون فقط عند وجود تكرار."
أنت هنا لم تضف Instruction فقط، أنت حللت التعارض.
ثاني نوع توه: تراكم التصحيحات الصغيرة
أنت تبدأ بنص، ChatGPT يكتب، تعدل عليه، بعدين تعدل التعديل، وبعد عشرين رسالة تبقى فيه طبقات من الاستثناءات.
في المرحلة دي الأفضل أحيانًا تعمل "ملخص تشغيل" بدل ما تعتمد على إن كل التصحيحات القديمة تظل مفهومة في علاقتها ببعض.
الملخص التشغيلي مش تلخيص للمحادثة كلها، هو وصف للحالة الحالية: الهدف الحالي، النسخة المعتمدة، القرارات التي تم تثبيتها، القواعد الفعالة، وما تم إلغاؤه.
مثلًا: "الحالة الحالية: نكتب دليلًا للمبتدئين، نستخدم العربية البسيطة، لا نفترض معرفة مسبقة، كل درس ينتهي بتطبيق، ولا نستخدم أمثلة من مشروعات خاصة. تم إلغاء فكرة تقسيم الدروس حسب المنتج، وسنعتمد التقسيم حسب قرار المستخدم."
الجملة دي أنفع من إن ChatGPT يرجع يفسر 40 رسالة علشان يستخرج نفس الحالة.
ثالث نوع توه: تغير الهدف نفسه
وده أخطر من تغير الأسلوب. ممكن تبدأ وأنت عايز "تلخيص تقرير"، وبعد النقاش تكتشف إنك عايز "استخراج قرارات ومخاطر". لو فضلت تستخدم نفس كلمات الطلب القديم، النموذج قد يستمر في التلخيص حتى لو الهدف الحقيقي تغير.
لما الهدف يتغير، صرّح بالتغيير. قول: "إحنا لم نعد نعمل ملخصًا، الهدف الآن هو استخراج القرارات المفتوحة والمخاطر فقط. أي أجزاء تخدم التلخيص ولا تخدم القرار تجاهلها."
دي واحدة من أهم الحركات العملية لمنع التوهان.
رابع نوع توه: المعلومات القديمة
في المشاريع الطويلة، بعض الحقائق نفسها تتغير. موعد الإطلاق اتغير، الميزانية اتغيرت، نسخة المنتج اتحدثت، الشخص المسؤول اتبدل.
لو المعلومة القديمة ما زالت موجودة في المحادثة أو الملف، لازم يكون عندك طريقة توضح أي نسخة هي المعتمدة.
هنا يظهر مفهوم Source of Truth اللي هنشرحه بالتفصيل في المشاريع والملفات، لكن الفكرة من دلوقتي بسيطة: لما يكون عندك أكثر من نسخة، لازم تحدد المرجع الحالي بدل ما تسيب ChatGPT يختار.
إمتى تعمل Reset جزئي؟
الـReset الجزئي معناه إنك لا تبدأ من الصفر، لكنك تعيد تعريف الحالة الحالية.
استخدمه لما تلاحظ إن المحادثة لسه مفيدة، لكن اتجمعت فيها تفاصيل قديمة كثيرة. بدل ما تفتح Chat جديدة وتفقد كل شيء، اكتب رسالة منظمة تقول فيها: "هنكمل من نفس المشروع، لكن اعتمد فقط على القواعد التالية في المرحلة الحالية..." وبعدها تذكر الحالة المحدثة.
المهم إن الرسالة تكون تحديثًا للحالة، مش إعادة لصق كل شيء اتقال قبل كده.
إمتى الأفضل تسيب المحادثة وتبدأ من جديد؟
لو الهدف تغير جذريًا، أو المحادثة بقت مليانة فروع وتجارب لا علاقة لها بالمسار الحالي، أو بقى صعب جدًا تشرح ما الذي يجب تجاهله، فتح Chat جديدة أنظف.
وقتها ممكن تاخد معاك "حزمة سياق" صغيرة: الهدف الحالي، القرارات المعتمدة، المصادر، والقواعد الفعالة، وتبدأ من هناك.
الفكرة إنك تنقل الحالة، مش تنقل التاريخ كله.
الطريقة الغلط: "اقرأ كل اللي فات وافهم لوحدك"
الجملة دي أحيانًا تشتغل، لكنها مش طريقة إدارة جيدة للمشاريع المعقدة. أنت بتحمل النموذج مسؤولية استخراج الحالة الحالية من سجل طويل فيه قرارات قديمة وجديدة وتجارب فاشلة.
لو عندك مشروع جاد، ساعده بتحديد النسخة الحالية. ده مش معناه إن ChatGPT ضعيف، ده نفس المنطق اللي تستخدمه مع البشر، الموظف الجديد يستفيد من وثيقة حالة حالية أكثر من مئة رسالة دردشة قديمة.
الطريقة الأفضل: اكتب حالة حالية قصيرة عند نقاط التحول
مش كل خمس رسائل، لكن عند انتقال مهم، اعمل تحديثًا قصيرًا يشمل أربعة أشياء: الهدف الآن، ما تم اعتماده، ما تم إلغاؤه، وما المصدر الحالي.
الحركة دي بسيطة جدًا لكنها تقلل التوهان بشكل ضخم، خصوصًا قبل مرحلة تنفيذ كبيرة أو قبل فتح Chat جديدة.
افترض إنك كنت تخطط لمؤتمر، وفي البداية الميزانية 50 ألف، ثم أصبحت 70 ألف، ثم قررت إلغاء الحفل الختامي، ثم تغير عدد الحضور من 200 إلى 300.
اكتب رسالة Reset جزئي من فقرة واحدة، توضح الحالة الحالية فقط بدون إعادة سرد تاريخ القرارات.
لو قدرت تعملها، أنت بدأت تفكر في الـContext كحالة عمل، مش أرشيف رسائل.
الخلاصة
ChatGPT بيتوه غالبًا لما السياق نفسه يبقى متضاربًا أو قديمًا أو مليانًا بضوضاء لا تخدم القرار. الحل مش دايمًا Prompt أقوى، أحيانًا الحل إنك تنظف الحالة الحالية، تلغي القواعد القديمة بوضوح، تحدد المصدر المعتمد، وتفتح Chat جديدة لما يكون التاريخ القديم بقى عبئًا.
أحسنت، وصلت إلى نهاية الدرس.