Agentic & Modern2023متوسط11 دقيقة قراءة

Reflexion: وكلاء لغويون بالتعزيز اللفظي

Reflexion: Language Agents with Verbal Reinforcement Learning

Shinn, N. · Cassano, F. · Berman, E. · Gopinath, A. · Narasimhan, K. · Yao, S. — NeurIPS

المشكلة

بحلول عام 2023، كانت النماذج اللغوية الكبيرة تُستخدم كوكلاء موجَّهين بالأهداف يتفاعلون مع بيئات خارجية عبر أفعال — كالألعاب وكتابة الشيفرة واستدعاء واجهات البرمجة. لكن حين كان هؤلاء الوكلاء يُخفقون، لم تكن لديهم طريقة فعّالة للتعلّم من أخطائهم. التعلّم المعزَّز التقليدي يتطلّب تحديث أوزان النموذج، وهي عملية باهظة الكلفة مع نماذج بمليارات المعاملات. وإعادة المحاولة دون تأمّل لا تجدي — يميل لتكرار الأخطاء ذاتها. كان الميدان بحاجة إلى آلية تُمكّن الوكلاء اللغويين من التعلّم بالمحاولة والخطأ دون أي تحديث تدريجي للأوزان.

الإسهام

قدّمت Reflexion إطاراً يستبدل تحديث الأوزان بالتدرّجات بالتأمّل الذاتي اللفظي المُخزَّن في ذاكرة عَرَضية. بعد كل محاولة فاشلة، يُولِّد نموذج التأمّل الذاتي تحليلاً بلغة طبيعية يُحدّد فيه مواضع الخطأ، ثم يُضاف هذا التحليل إلى ذاكرة الوكيل ويُستخدم كسياق في المحاولات اللاحقة. الوكيل تُعرَّف بوصفها (النموذج اللغوي + الذاكرة) بدلاً من أوزان النموذج فحسب. حقّقت Reflexion دقة 91% على معيار HumanEval مقارنة بـ 80% لـ GPT-4، وحسّنت اتخاذ القرار في AlfWorld بنسبة 22%، ورفعت أداء الاستدلال على HotPotQA بنسبة 20% — كل ذلك دون أي ضبط دقيق.

الأثر

رسّخت Reflexion فكرة أن التأمّل الذاتي اللفظي يمكن أن يكون إشارة تعزيز حقيقية للوكلاء اللغويين. أثبتت أن النماذج اللغوية الكبيرة قادرة على «التعلّم» داخل نافذة السياق — بلا أي تحديث للأوزان — من خلال الاحتفاظ بذاكرة مُنظّمة من الأخطاء السابقة. هذه الرؤية أثّرت في تصميم أنظمة وكيلية مثل Voyager وSelf-RAG ووكلاء SWE-Bench. وأصبحت فكرة أن اللغة الطبيعية يمكن أن تكون وقناة معاً مبدأً تأسيسياً لموجة الذكاء الاصطناعي الوكيلي في 2023–2024.

تخيّل لاعب شطرنج يخسر مباراة، لكنه بدلاً من مجرد إعادة تشغيل الرقعة، يكتب في دفتر ملاحظاته: «خسرت الوزير لأنني تجاهلت قطرية الفيل. في المرة القادمة، سأتفقّد كل الأقطار قبل أن أتحرّك.» وقبل المباراة التالية، يُعيد قراءة ملاحظاته.

لا يدرس افتتاحيات جديدة. ولا يستعين بمدرّب. كل ما يفعله هو أنه يُحدّث نفسه — على الورق — بما أخطأ فيه.

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

المشكلة: وكلاء يكرّرون أخطاءهم

بحلول عام 2023، أصبحت الوكلاء المبنية على نماذج لغوية كبيرة مثل ReAct قادرة على التفاعل مع بيئات خارجية — البحث في الويب، والتنقّل في ألعاب نصية، وكتابة شيفرة وتنفيذها. لكن حين كان الوكيل يفشل في مهمة ما، لم يكن أمامه سوى خيارين، كلاهما سيّئ.

الخيار الأول هو التعلّم المعزَّز التقليدي: حساب التدرّجات وتحديث أوزان النموذج. بالنسبة لنموذج يضمّ مليارات المعاملات، هذا مُكلف لدرجة تمنع التطبيق العملي. ستحتاج إلى مجموعات بيانات كبيرة، وعتاد متخصّص، وساعات من الحوسبة — فقط لتعليم الوكيل درساً واحداً.

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

Reflexion تقترح مساراً ثالثاً: دع الوكيل يُحدّث نفسه بما أخطأ فيه، ثم احفظ هذا الحديث الذاتي، واقرأه قبل المحاولة التالية.

الإطار: ثلاثة نماذج في حلقة

يتألّف إطار Reflexion من ثلاثة مكوّنات تعمل معاً في حلقة تكرارية:

الفاعل (MaM_a) هو الوكيل اللغوي الذي يُولّد الأفعال. يمكن أن يكون أي استراتيجية لتوليد الأفعال — كسلسلة التفكير (Chain of Thought) للاستدلال، أو ReAct لاتخاذ القرارات متعددة الخطوات. يستقبل الفاعل المهمة الحالية مع أي تأمّلات مُخزّنة من الذاكرة، ويُنتج مساراً من الأفعال والملاحظات.

المُقيِّم (MeM_e) يُسجّل نقاط مخرجات الفاعل. يمكن أن يكون بسيطاً كنتيجة نجاح/رسوب من مترجم برمجي، أو مطابقة تامة مع إجابة مرجعية، أو حتى نموذج لغوي يعمل كحَكَم. يُنتج إشارة مكافأة rtr_t للمحاولة tt.

نموذج التأمّل الذاتي (MsrM_{sr}) هو قلب الإطار. بالنظر إلى المسار الفاشل τt\tau_t والمكافأة rtr_t، يُولّد تحليلاً لفظياً: ما الذي سار بشكل خاطئ، وأيّ فعل بعينه تسبّب في الإخفاق، وما الذي ينبغي فعله بشكل مختلف. هذا النص يُضاف إلى للوكيل.

افتح في المختبر
حلقة Reflexion: الفاعل يحاول المهمة، المُقيِّم يُسجّل النتيجة، نموذج التأمّل الذاتي يُحلّل الإخفاق، ثم يُخزَّن التأمّل في الذاكرة للمحاولة التالية. انقر على كل مكوّن لمعرفة المزيد.
تستيقظ التجربة عند وصولك…

القرار التصميمي الحاسم هو كيفية تحديد معاملات السياسة. في التعلّم المعزَّز التقليدي، السياسة πθ\pi_\theta هي أوزان النموذج θ\theta. في Reflexion، السياسة هي πθ\pi_\theta حيث θ={Ma,mem}\theta = \{M_a, \text{mem}\} — أي النموذج اللغوي المُجمَّد بالإضافة إلى ذاكرة عَرَضية. التعلّم يحدث بتحديث الذاكرة وليس الأوزان:

πθ(atst),θ={Ma,  mem}\pi_\theta(a_t \mid s_t), \quad \theta = \{M_a, \;\text{mem}\}
سياسة Reflexion — أوزان النموذج مُجمَّدة، والذاكرة هي المُعامِل القابل للتعلّميختار الوكيل الفعل ata_t بالنظر إلى الحالة sts_t مشروطاً على النموذج اللغوي المُجمَّد MaM_a والذاكرة العَرَضية mem. تتراكم في الذاكرة تأمّلات ذاتية من إخفاقات سابقة. التعلّم هنا ببساطة إضافة تأمّلات جديدة إلى الذاكرة — لا تدرّجات ولا انتشار عكسي.

التأمّل الذاتي: تحويل الإخفاق إلى دروس

خطوة التأمّل الذاتي هي المكان الذي تُحوِّل فيه Reflexion إشارة المكافأة الشحيحة إلى تغذية راجعة غنية وقابلة للتنفيذ. تأمّل وكيلاً برمجياً يُرسل شيفرة تفشل في 3 من أصل 5 اختبارات وحدة. الوكيل في التعلّم المعزَّز التقليدي يحصل على المكافأة r=0.4r = 0.4 ويجب عليه بطريقة ما أن يكتشف ما يجب إصلاحه. لكن نموذج التأمّل الذاتي في Reflexion يُنتج نصاً من هذا القبيل:

«تطبيقي للبحث الثنائي استخدم <= بدلاً من < في شرط الحلقة، ما تسبّب في حلقة لا نهائية في الحالات الحدّية. كما نسيت التعامل مع حالة المصفوفة الفارغة. في المرة القادمة، يجب أن أضيف فحوصات للحدود قبل الحلقة الرئيسية وأستخدم < في المقارنة.»

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

افتح في المختبر
شاهد ذاكرة التأمّلات تتراكم عبر المحاولات. كل محاولة فاشلة تُضيف تأمّلاً ذاتياً. الوكيل يقرأ جميع التأمّلات السابقة قبل محاولته التالية.
تستيقظ التجربة عند وصولك…

إشارات التقييم: كيف يعرف الوكيل أنه أخفق

صُمّمت Reflexion لتعمل مع أنواع ومصادر مختلفة من إشارات التغذية الراجعة. الإطار مرن — المهم أن تتوفّر إشارة ما يستطيع الوكيل التأمّل فيها.

في مهام اتخاذ القرار مثل AlfWorld، يستخدم المُقيِّم قواعد استدلالية مكتوبة يدوياً. إذا كرّر الوكيل الفعل نفسه ثلاث مرات أو تجاوز 30 خطوة، فهو على الأرجح عالق — حان وقت التأمّل. البيئة نفسها تُشير إلى ما إذا أُنجزت المهمة أم لا.

في مهام الاستدلال مثل HotPotQA، يستخدم المُقيِّم التصنيف بالمطابقة التامة: هل إجابة الوكيل تُطابق الإجابة الصحيحة؟ إشارة ثنائية بسيطة — لكن نموذج التأمّل الذاتي يُحوّلها إلى تغذية راجعة لفظية ثرية حول سبب خطأ الإجابة.

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

افتح في المختبر
استكشف المجالات الثلاثة وأنواع تغذيتها الراجعة. كل مجال يُحوِّل إشارته الأصلية إلى تأمّل لفظي.
تستيقظ التجربة عند وصولك…

النتائج: مكاسب كبيرة في ثلاثة مجالات

اختُبرت Reflexion على ثلاثة أنواع مختلفة جوهرياً من المهام، يتطلّب كل منها مهارات مختلفة. وفي جميعها، تفوّقت بشكل ملحوظ على خطوط الأساس القوية — دون أي ضبط دقيق للنموذج.

اتخاذ القرار (AlfWorld): يتنقّل الوكيل في بيئات منزلية نصية — كإيجاد ملعقة في درج أو تبريد طماطم في الثلاجة. ReAct وحده حلّ 75% من 134 مهمة. أما ReAct + Reflexion فحلّ 97% (130 من 134) عبر 12 محاولة تكرارية. جاء التحسّن على مرحلتين: قفزة حادة في البداية (الوكيل صحّح الأخطاء الواضحة بسرعة) ثم صعود مطّرد (تعلّم تدريجياً الاستكشاف بشكل أكثر منهجية مستفيداً من ذاكرته لتتبّع الأماكن التي فتّشها سابقاً).

الاستدلال (HotPotQA): على 100 سؤال متعدد الخطوات يتطلّب البحث في ويكيبيديا وتجميع المعلومات، حسّنت Reflexion + ReAct الدقة بنسبة 20% مقارنة بـ ReAct وحده. اللافت أن الوكلاء الأساسيين لم يُظهروا أي تحسّن عبر إعادة المحاولات (عند حرارة 0.7)، بينما تحسّن وكلاء Reflexion بشكل مطّرد — ما يُثبت أن التأمّل الذاتي هو المحرّك الفعلي للمكاسب وليس العشوائية.

البرمجة (HumanEval): حقّقت Reflexion دقة 91% بمعيار pass@1 على اختبار HumanEval بلغة بايثون، متجاوزةً 80% لـ GPT-4. يُولّد الوكيل شيفرة، ويُنفّذها مقابل اختبارات وحدة يُولّدها بنفسه، ويتأمّل في الإخفاقات، ويُكرّر. هذا هو المجال الذي يتألّق فيه الإطار أكثر: أخطاء المترجم البرمجي توفّر تغذية راجعة مفصّلة ومُهيكلة تُناسب التأمّل الذاتي تماماً.

افتح في المختبر
قارن Reflexion بخطوط الأساس عبر AlfWorld وHotPotQA وHumanEval. بدّل بين المجالات لترى منحنيات التحسّن.
تستيقظ التجربة عند وصولك…

التجريد: ما الذي يجعل التأمّل الذاتي فعّالاً؟

أجرى المؤلفون دراسات تجريدية لعزل مساهمة كل مكوّن. أكثر التجارب كشفاً كانت المقارنة بين ثلاث مقاربات على استدلال HotPotQA مع سياق مرجعي:

  1. إعادة المحاولة الأساسية — إعادة المهمة دون ذاكرة. الأداء يبقى ثابتاً.

  2. الذاكرة العَرَضية (EPM) — تضمين أحدث مسار كسياق، لكن بلا تأمّل لفظي. هذا يساعد بشكل معتدل — الوكيل يستطيع رؤية ما جرّبه سابقاً.

  3. Reflexion — إضافة خطوة التأمّل الذاتي التي تُقطّر الإخفاق في درس لفظي. هذا يُضيف تحسّناً مطلقاً بنسبة 8% فوق الذاكرة العَرَضية وحدها.

الفجوة بين الذاكرة العَرَضية وReflexion تُثبت أن إعادة عرض التجارب الخام ليست كافية. التقطير إلى دروس لفظية هو ما يصنع الفرق. الوكيل لا يرى فقط ما فعله — بل يفهم لماذا أخفق وماذا يجب تغييره.

في البرمجة، إزالة اختبارات الوحدة المُولَّدة ذاتياً أنقصت الدقة من 91% إلى 82%. بدون الاختبارات، لا يملك الوكيل وسيلة لفحص عمله قبل التسليم. وإزالة التأمّل الذاتي مع الإبقاء على الاختبارات أنقصت الدقة أكثر — الاختبارات وحدها تُقدّم إشارات خطأ خامة، لكن التأمّل الذاتي ضروري لتحويل تلك الإشارات إلى خطط قابلة للتنفيذ.

Reflexion في الشيفرة: الحلقة التكرارية

شبه شيفرة لحلقة Reflexionpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

# حلقة التعزيز في Reflexion
def reflexion_loop(task, actor, evaluator, reflector, max_trials=5):
    memory = []  # ذاكرة عَرَضية
    for trial in range(max_trials):
        # الفاعل يُولّد مساراً مشروطاً على المهمة + الذاكرة
        trajectory = actor.generate(task, memory)

        # المُقيِّم يُسجّل نقاط المسار
        reward = evaluator.score(trajectory)
        if reward == 1.0:  # المهمة حُلّت
            return trajectory

        # التأمّل الذاتي: تحليل سبب الإخفاق
        reflection = reflector.reflect(trajectory, reward)
        # مثال: «بحثت عن الكيان الخطأ. في المرة القادمة
        #         أبحث عن المخرج وليس الفيلم.»

        memory.append(reflection)  # تخزين الدرس
        # الاحتفاظ بآخر 3 تأمّلات فقط (حد السياق)
        memory = memory[-3:]

    return None  # فشل بعد الحد الأقصى من المحاولات

القيود والمسار القادم

لدى Reflexion قيود واضحة يعترف بها المؤلفون. أولاً، تعتمد على قدرة النموذج اللغوي على تحديد أخطائه بدقة — وهو نوع من التقييم الذاتي ليس موثوقاً دائماً. إذا ولّد النموذج تأمّلاً ذاتياً خاطئاً (مثل «أخفقت لأن الواجهة البرمجية كانت بطيئة» بينما المشكلة الفعلية كانت خطأ منطقياً)، فالدرس الخاطئ يُخزَّن في الذاكرة وقد يُضرّ بالمحاولات المستقبلية.

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

ثالثاً، لا يوجد ضمان رسمي للتقارب. أساليب التعلّم المعزَّز التقليدية يمكنها إثبات التقارب تحت شروط معيّنة؛ Reflexion لا تقدّم دعماً نظرياً من هذا النوع. فعاليتها تجريبية — تعمل جيداً عملياً، لكن لا يمكن إثبات أنها ستتحسّن دائماً.

رغم هذه القيود، أثبتت الفكرة الجوهرية — أن اللغة يمكن أن تكون إشارة تعزيز — صلابة ملحوظة وأثّرت في تصميم كل نظام وكيلي لاحق تقريباً.

الإرث: نموذج الوكيل المُحسِّن لذاته

  1. 2022

    ReAct — حين يلتقي الاستدلال بالفعل

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

  2. 2023

    Reflexion (هذه الورقة)

    قدّمت التعلّم المعزَّز اللفظي: التأمّل في الإخفاقات بالكلمات وتخزين التأمّلات في ذاكرة عَرَضية واستخدامها للتحسّن في المحاولة التالية. 91% على HumanEval بدون ضبط دقيق.

  3. 2023

    Self-RAG — الاسترجاع بالتأمّل الذاتي

    وسّعت فكرة التأمّل الذاتي لتشمل التوليد المُعزَّز بالاسترجاع. يقرّر النموذج متى يسترجع، وماذا يسترجع، وهل المحتوى المُسترجَع ذو صلة — كل ذلك عبر رموز تأمّل مُولَّدة ذاتياً.

  4. 2023

    Voyager — وكيل التعلّم مدى الحياة في Minecraft

    طبّقت نموذج التأمّل والتخزين على الاستكشاف المفتوح. يبني Voyager مكتبة مهارات متنامية حيث تُتحقَّق كل مهارة عبر البيئة — وهي قريبة الشبه بذاكرة Reflexion العَرَضية.

  5. 2024

    وكلاء SWE-Bench — التأمّل الذاتي في قواعد شيفرة حقيقية

    وكلاء يُعالجون مشكلات GitHub حقيقية تبنّوا التكرار بأسلوب Reflexion: محاولة إصلاح، ثم تنفيذ الاختبارات، ثم التأمّل في الإخفاقات، ثم إعادة المحاولة. أثبت هذا النمط أهميته الحاسمة في مهام تصحيح الأخطاء المعقّدة متعددة الملفات.

المرجعShinn, Cassano, Berman, Gopinath, Narasimhan, Yao. Reflexion: Language Agents with Verbal Reinforcement Learning. NeurIPS, 2023.

مصطلحات هذه الورقة