تقنية

حذف عنصر من جلسة الوكيل: هل مسحنا الحوار كله؟

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

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

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

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

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

ما الفرق بين العمليتين في الكود؟

يزيل pop_item آخر عنصر في قائمة TrimmingSession ويعيده؛ إذا فرغت يعيد None. أما clear_session فيفرغ القائمة نفسها. هذا تنفيذ تعليمي في الذاكرة. [1]

نسمي الهدف قبل طلب الحذف: الجلسة ج 1 وقائمة عناصرها الحالية. لا نستعمل كلمة «حذف» وحدها كي تعني مرة عنصرًا، ومرة دور مستخدم، ومرة جميع سجلات المشروع. لكل واحد مجموعة مختلفة من المادة.

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

أي جزء يبقى من التبادل؟

نؤلف أربعة عناصر مرتبة: مستخدم يسأل عن بطاقة ب 7، ثم مساعد يقترح قراءتها، ثم طلب أداة يحمل ب 7، ثم نتيجة تقول «العنوان: طي الزهرة». نفرض أن الأربعة هي القائمة الحالية بعد أي قص سابق، ولا توجد كتابة متزامنة أثناء تمريننا.

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

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

هل تتغير قائمة مستقلة معها؟

نعلن قائمة ثانية ج 2، مستقلة عن الأولى، فيها نص مؤلف يقتبس «العنوان: طي الزهرة». إذا طبقنا الإفراغ على ج 1 فقط، تصبح ج 1 فارغة في نموذجنا، وتبقى ج 2 على حالها لأننا لم نضع عملية عليها.

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

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

كيف نصف النتيجة دون مبالغة؟

اكتب اسم الجلسة والعملية والعناصر التي راجعتها قبل التغيير وبعده. في مثالنا نفرق بين قائمة أقصر وقائمة فارغة، ونحتفظ بحدود الهدف المحدد في وصفنا.

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

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

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

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

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