مستوى القارئ: متوسط. الكلام ده موجّه لحد عارف يعني إيه API و LLM و request، بس لسه ما اشتغلش على وكلاء (Agents) قبل كده. لو انت مبتدئ تمام، فيه مثال بسيط في الأول هيوصّلك الفكرة قبل التعريف العلمي.
وكلاء الذكاء الاصطناعي وحلقة ReAct: من نموذج بيخمّن لوكيل بيشتغل
لو ربطت LLM بشات بوت وسألته "طلب العميل رقم A1029 وصل ولا لسه؟"، هتلاقيه بيرد بثقة برقم تتبّع أو حالة مخترعة بالكامل. السبب مش إن النموذج غبي. السبب إنه معندوش طريقة يجيب البيانات الحقيقية، فبيخمّن. وكيل الذكاء الاصطناعي بيحل ده بإنه يدّي النموذج يد تمتد بره دماغه: يفكر، ينده أداة، يقرا النتيجة، ويرجع يفكر تاني.
المشكلة باختصار
نداء LLM واحد بيشتغل بـ "اسأل مرة، رُد مرة". مفيش خطوة في النص يقدر فيها النموذج يروح يجيب معلومة من الداتابيز أو الـ API. فلما السؤال محتاج بيانات حيّة (حالة طلب، رصيد، سعر لحظي)، النموذج بيكمّل الفراغ من ذاكرته بدل ما يعترف إنه مش عارف. ده اللي بنسمّيه هلوسة.
المثال الأول (للمبتدئ): موظف الاستقبال الجديد
تخيّل شركة شحن عيّنت موظف استقبال جديد أول يوم. لو جه عميل وسأله "شحنتي فين؟"، عندنا حالتين:
- الموظف اللي بيخمّن: يرد على طول "وصلت امبارح" علشان يبان شاطر. ده الـ LLM لوحده.
- الموظف اللي بيشتغل صح: يقول "ثانية واحدة"، يفتح نظام التتبّع (أداة)، يكتب رقم الشحنة، يقرا الحالة الحقيقية، وبعدين يرد. ولو الرقم غلط، يرجع يسأل العميل ويعيد. ده الوكيل.
الفرق مش في الذكاء. الفرق إن التاني عنده حلقة: يفكر، يعمل حاجة، يشوف النتيجة، يقرر الخطوة اللي بعدها.
التعريف العلمي: يعني إيه وكيل وحلقة ReAct
الوكيل (Agent) هو نظام بيدّي الـ LLM القدرة إنه ياخد قرار بفعل (action) وينفّذه عبر أدوات خارجية، ويستخدم نتيجة الفعل ده كمدخل للخطوة اللي بعدها، ويفضل يكرّر لحد ما يوصل للهدف. النمط الأساسي اللي بيحكم ده اسمه ReAct، اختصار لـ Reasoning + Acting، من ورقة Yao وزملائه سنة 2022.
الحلقة بتمشي بثلاث خطوات بتتكرر:
- Thought (تفكير): النموذج يكتب لنفسه: أنا عارف إيه؟ ناقصني إيه؟ أعمل إيه دلوقتي؟ الخطوة دي بتجبره يفكّر في السياق بدل ما يقفز لإجابة جاهزة.
- Action (فعل): ينده أداة محددة — استعلام داتابيز، نداء API، بحث.
- Observation (ملاحظة): ياخد نتيجة الأداة ويرجّعها للنموذج، فتدخل في دورة التفكير اللي بعدها.
الحلقة بتقف لما النموذج يلاقي إجابة قاطعة، أو يوصل لسقف خطوات محدد سلفًا، أو يقابل خطأ يمنعه يكمّل. الفرق الجوهري عن نداء واحد: إن المعلومة بتدخل من العالم الحقيقي في النص، مش من ذاكرة النموذج.
الكود: أبسط وكيل ممكن في Python
ده وكيل بأداة واحدة بس، شغّال على Claude tool use. ركّز على حتة الـ loop، دي قلب الموضوع كله: