الرئيسيةمن أناالدوراتالمدونةسوق الأوامرالمناهج والباقاتالشركاء

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

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

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • سوق الأوامر
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالمناهجالمدونةالدخول
الذكاء الاصطناعي

الوكلاء الأذكياء وحلقة ReAct: خلّي النموذج ينفّذ مش يوصف بس

متوسط24 يوليو 20265 دقائق قراءة
الوكلاء الأذكياء وحلقة ReAct: خلّي النموذج ينفّذ مش يوصف بس

مستوى هذا المقال: متوسط. الافتراض إنك تعرف أساسيات نماذج اللغة (LLM) وتقدر تقرأ كود Python بسيط. لو انت مبتدئ تمامًا، ركّز على المثال البسيط في البداية وتجاوز الكود.

الوكلاء الأذكياء وحلقة ReAct: من نموذج بيتكلم لنموذج بينفّذ

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

المشكلة باختصار

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

المثال البسيط الأول

تخيّل موظف استقبال في فندق. لو سألته "الغرفة 214 فاضية؟" وهو قاعد بيرد من دماغه من غير ما يبص على الشاشة، ممكن يغلط. الموظف الشاطر بيعمل 3 حاجات: يفكّر ("محتاج أتأكد من نظام الحجز")، ينفّذ (يفتح الشاشة ويدوّر)، يقرا النتيجة ("الغرفة محجوزة لبكرة")، وبعدين يرد. لو السؤال مركّب، بيكرّر الدورة: يبص على الشاشة تاني، يسأل المطبخ، وهكذا لحد ما يجمع كل حاجة.

ReAct بالظبط كده: النموذج بيتناوب بين Reasoning (تفكير مكتوب بصوت عالٍ) وActing (استدعاء أداة حقيقية)، والنتيجة اللي بترجع من الأداة اسمها Observation بتتحقن في السياق فبيقرّر الخطوة اللي بعدها.

الشرح العلمي: إيه اللي بيحصل فعلاً

الاسم ReAct اختصار لـ Reasoning + Acting. الفكرة من ورقة Yao وزملائه سنة 2022. بدل ما النموذج يطلع الإجابة في خطوة واحدة، بيولّد أثر تفكير (Thought) يحدد فيه الخطوة التالية، وبعدين فعل (Action) على شكل استدعاء أداة، وبعدين بيستنى ملاحظة (Observation). التفكير المكتوب بيخلّي النموذج يخطّط ويصحّح مساره، والأفعال بتربطه بمصدر خارجي حقيقي بدل ما يعتمد على ذاكرته. الحلقة بتفضل تلف لحد ما النموذج يقرّر إنه وصل للإجابة النهائية.

ابنيه بنفسك في أقل من 30 سطر

ده وكيل ReAct مبسّط. لاحظ الحلقة الثلاثية والحارس max_steps، ده أهم سطر في الكود.

Python
TOOLS = {
    "search": lambda q: web_search(q),   # يرجّع نص نتيجة البحث
    "calc":   lambda e: str(eval(e)),     # حاسبة بسيطة
}

def react(goal, max_steps=6):
    history = f"الهدف: {goal}\n"
    for step in range(max_steps):
        # 1) Thought + Action: النموذج يفكّر ويقرّر
        reply = ask_llm(history +
            "فكّر خطوة، ثم اكتب سطرًا واحدًا:\n"
            "Action: <tool> | <input>   أو   Final: <answer>")
        history += reply + "\n"

        if reply.startswith("Final:"):
            return reply.replace("Final:", "").strip()

        # 2) ننفّذ الأداة
        tool, arg = reply.replace("Action:", "").split("|")
        observation = TOOLS[tool.strip()](arg.strip())

        # 3) Observation: نرجّع النتيجة للنموذج
        history += f"Observation: {observation}\n"

    return "توقفت: تجاوزت الحد الأقصى للخطوات"

المهم هنا إن النتيجة الحقيقية (Observation) بترجع للسياق، فالنموذج بيبني قراره الجاي على بيانات فعلية مش على تخمين.

سيناريو واقعي بالأرقام

لو عندك بوت خدمة عملاء بيرد على 3000 استفسار في اليوم عن حالة الطلبات، الشات بوت العادي هيخمّن أو يقول "راجع حسابك". وكيل ReAct هيعمل: Thought ثم Action (استعلام قاعدة البيانات برقم الطلب) ثم Observation (الحالة الحقيقية) ثم رد دقيق. حسب ورقة ReAct الأصلية، الأسلوب حقّق تحسّنًا مطلقًا يقارب 34 نقطة مئوية في نسبة إتمام المهام على بيئة ALFWorld مقارنةً بأسلوب التنفيذ المباشر بدون تفكير. الافتراض إن أدواتك (قاعدة البيانات، الـ API) بترجّع بيانات صحيحة؛ الوكيل بيصفّي الهلوسة عن التخطيط، مش عن مصدر بياناتك.

الـ trade-off هنا

كل لفّة في الحلقة = استدعاء LLM إضافي. يعني مهمة من 5 خطوات ممكن تكلّف حوالي 5 أضعاف التوكنز و5 أضعاف زمن الرد مقارنة برد واحد. لو الاستدعاء الواحد بياخد نحو 800 مللي ثانية، مهمة 5 خطوات ممكن توصل لـ 4 ثوانٍ تقريبًا قبل الرد النهائي. بتكسب دقة وقدرة على الفعل، بتخسر سرعة وتكلفة. عشان كده حارس max_steps مش رفاهية: من غيره ممكن الوكيل يدخل في حلقة لا نهائية تحرق فلوسك.

متى لا تستخدم هذه الطريقة

لو مهمتك سؤال وجواب مباشر من معرفة عامة (زي "اشرحلي الفرق بين TCP وUDP")، مفيش داعي لوكيل، رد واحد أرخص وأسرع. كمان لو مش عندك أدوات حقيقية موثوقة يستدعيها، الوكيل هيضيف تعقيد وتكلفة بدون مقابل. ابدأ بأبسط حل: prompt عادي، وبعدين function calling لأداة واحدة، ولو المهمة محتاجة تخطيط متعدد الخطوات ساعتها روح لـ ReAct.

الخطوة التالية

خُد أبسط مهمة عندك محتاجة بيانات حديثة (مثلًا سعر أو حالة طلب)، عرّف أداة واحدة بس، ولفّها في حلقة الكود اللي فوق بـ max_steps=3. شغّلها على 10 حالات وقيس نسبة الردود الصحيحة قبل وبعد. لو اتحسّنت، وسّع الأدوات تدريجيًا؛ لو لأ، غالبًا مشكلتك في الأداة نفسها مش في الوكيل.

المصادر

  • Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models", 2022 — arxiv.org/abs/2210.03629 (أرقام ALFWorld والمنهجية).
  • Schick et al., "Toolformer: Language Models Can Teach Themselves to Use Tools", 2023 — arxiv.org/abs/2302.04761.
  • OpenAI, "Function calling" documentation — platform.openai.com/docs/guides/function-calling.
  • Anthropic, "Tool use" documentation — docs.anthropic.com/en/docs/build-with-claude/tool-use.
  • LangChain, "Agents" concept docs — python.langchain.com/docs/concepts/agents.

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة