تقنية

حد أدوار ذاكرة الوكيل: هل يحتفظ برسالتين فقط؟

رسم يبين سجل ثمانية عناصر وبداية الاحتفاظ عند العنصر الثالث ثم ستة عناصر باقية
رسم توضيحي من إعداد بحر العلوم؛ عدد الأدوار لا يحدد عدد الكلمات.

حد أدوار ذاكرة الوكيل يحتاج إلى تعريف ما يعد دورا. نقرأ تنفيذ TrimmingSession التعليمي المنشور في OpenAI Cookbook، حيث يختار max_turns أجزاء من سجل المحادثة. لا نعامل هذا الخيار كحد تشغيل لكل وكيل، ولا كعدد رسائل أو كلمات. المثال الحسابي التالي من تأليفنا.

الخلاصة السريعة

لا؛ في التنفيذ التعليمي الذي نقرأه، حفظ آخر دورين يعني الاحتفاظ بما يبدأ عند ثاني أحدث رسالة مستخدم، مع العناصر التي تليها.

  • يحتفظ TrimmingSession التعليمي بآخر N أدوار مستخدم؛ الدور رسالة مستخدم وما يتبعها حتى التالية، والتنفيذ في الذاكرة. [1] ليس هذا تعريف كل منفذ أو حد إيقافه.
  • في سجلنا المؤلف ذي ثمانية عناصر، يبدأ آخر دورين عند العنصر الثالث؛ تبقى ستة عناصر، ومنها طلب أداة ونتيجتها، لا رسالتان فقط.
  • اختيار آخر عنصرين وحدهما في هذا السجل يعطي مجموعة مختلفة. وفقد طلب الأداة مع إبقاء نتيجتها لا يعادل الاحتفاظ بالدور كاملا.
  • إذا قل عدد رسائل المستخدم عن الحد أو لم توجد رسائل مستخدم، يحتفظ التنفيذ المذكور بجميع العناصر. [1] ولا يضمن عدد الأدوار وحده سقفا للرموز أو حفظ شرط قديم حذفته القاعدة.

أي وحدة يعدها المثال الموثق؟

في TrimmingSession المنشور، الدور رسالة مستخدم مع العناصر اللاحقة حتى التالية. يحتفظ التنفيذ بآخر N أدوار، ويقص السجل في عمليات القراءة والكتابة، وهو في الذاكرة. [1]

لا ننقل معنى الخيار إلى تشغيل آخر لم نقرأ عقده. كلمة «دور» قد تستعمل لوصف استدعاء نموذج أو عمل تطبيق، لكن هذا المثال يحددها بحدود رسائل المستخدم. كما لا نستنتج أنه يحفظ ملفا دائما من وجود كلمة Session.

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

ثمانية عناصر وثلاث رسائل مستخدم

نكتب بالترتيب: رسالة مستخدم أولى، جواب أول، رسالة مستخدم ثانية، طلب أداة، نتيجة الأداة، جواب ثان، رسالة مستخدم ثالثة، جواب ثالث. هذه ثمانية عناصر مؤلفة، لا سجل تشغيل جمعناه.

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

أما الرسالة الأولى وجوابها فيقعان قبل البداية المحددة. لا نقول إنهما اختصرا في ملخص؛ قاعدة التمرين تقص المقدمة ولا تنتج ملخصا بديلا لها.

لماذا لا نختار آخر عنصرين بدلا منهما؟

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

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

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

ما الاستثناء وما حدود العدد؟

يحتفظ كود المثال بكل العناصر إذا كان عدد رسائل المستخدم أقل من max_turns، أو لم توجد رسائل مستخدم. [1]

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

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

المصادر ومتابعة القراءة

  1. OpenAI Cookbook: Session memory — TrimmingSession (يفتح في نافذة جديدة)developers.openai.com

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.