الـ Agents· الدرس 4 من 6
- 1إيه هو الـ Agent؟8 دقيقة
- 2حلقة الـ Agent9 دقيقة
- 11نمط ReAct — الـ Agent اللي بيفكر قبل ما يتحرك8 دقيقة
- 20الـ Reflection — الـ Agent اللي بيراجع شغله9 دقيقة
- 21نمط الـ Evaluator–Optimizer — واحد يبني وواحد يحكم9 دقيقة
- 22تبني الـ Agents بإيه؟ — من غير Framework ولا LangGraph ولا CrewAI ولا AutoGen؟10 دقيقة
الـ Reflection — الـ Agent اللي بيراجع شغله
في سطر واحد · **الـ Reflection بيخلّي الموديل ياخد مسودته الأولى، ينتقدها بمعايير، ويطلّع نسخة أحسن — بدل ما يسلّم أول حاجة طلعت منه.** <!-- Field 3: TL;DR -->
- المسودة الأولى من أي موديل غالبًا «مقبولة» — مش «كويسة». والـ Agent اللي عمره ما بيبص وراه بيكرر نفس الغلطات لآخر المهمة.
- النمط تلات خطوات: Produce ← Critique ← Revise. الناقد (Critic) ممكن يكون نفس الموديل بدور تاني، أو موديل مختلف خالص.
- Reflexion — بالـ x — نسخة أقوى: نقد + ذاكرة للفشل السابق + إشارات خارجية (نتايج Tests، درجات Evals) بتتحقن في المحاولة الجاية. بيلمع بالذات في المهام اللي إجابتها قابلة للفحص.
- الاقتصاد بصراحة: جولة مراجعة واحدة بتحوّل النداء الواحد لتلاتة — والتكلفة ≈ 3×. وبعد جولة أو جولتين، التحسن بيقل بسرعة — دي قاعدة عملية مجربة، مش قانون.
- أخطر عدو للنمط: الناقد المجامل. نقد من غير معايير = «برافو، ممتاز» — بفلوسك.
<!-- Field 4: Why does this matter? -->
اطلب من موديل يكتب لك SQL Query مركبة أو ملخص تقرير — وخد أول رد زي ما هو. في أغلب الأحيان هتلاقي غلطة أو اتنين: شرط ناقص، معلومة متلخبطة، نقطة أساسية طارت. لو نظامك بيسلّم المسودة الأولى على طول، جودة نظامك = جودة أول محاولة. سقف واطي.
والموضوع بيبقى أخطر في الـ Agents الطويلة: غلطة صغيرة في الخطوة 2 بتتبني عليها الخطوات 3 و4 و5، والتقرير النهائي بيطلع معوج من أساسه.
الـ Reflection هو أرخص طريقة تشتري بيها جودة من غير ما تغيّر الموديل ولا تعمل Fine-tuning: خطوة مراجعة واحدة، مصممة صح، بتنقل مخرجات كتير من «ديمو» لـ «إنتاج». وهي كمان جسرك الطبيعي لعالم الـ Evaluation — نفس العقلية، جوه الـ Loop بدل بره النظام.
<!-- Field 5: Explain it simply (Layer 1) -->
بدل رد واحد، تلات خطوات: الموديل يكتب المسودة. بعدين — نفس الموديل أو موديل تاني بيلعب دور الناقد — يقراها ومعاه معايير محددة: إيه الغلط؟ إيه الناقص؟ وأخيرًا الموديل يعيد الكتابة بناءً على النقد ده.
أنت أصلًا بتعمل كده: قبل ما تبعت إيميل مهم، بتقراه تاني. الفرق إننا هنا بنجبر الموديل يعمل القراية التانية دي — وبقائمة فحص، مش بمزاج.
<!-- Field 6: Real-world analogy (Layer 2) -->
أنت عارف الفرق بين كود اتعمله Merge من غير مراجعة، وكود عدّى على Code Review محترم: Reviewer شايف الـ Diff، وماسك Checklist — أمان، أداء، حالات حدية.
الـ Reflection هو نفس الفكرة جوه النظام: المسودة هي الـ PR، والناقد هو الـ Reviewer، والمعايير هي الـ Checklist.
وزي الدنيا الحقيقية بالظبط: Reviewer من غير Checklist بيكتب «LGTM» ويمشي. ده هو الناقد المجامل — وهنرجعله، لأنه أشهر طريقة النمط ده بيفشل بيها.
<!-- Field 7: Simple example — before/after -->
مثال حقيقي
المهمة: «هات أعلى 5 عملاء صرفًا في آخر 90 يوم».
المسودة الأولى:
SELECT customer_id, SUM(total) AS spend
FROM orders
GROUP BY customer_id
ORDER BY spend DESC
LIMIT 5;شكلها سليم، وهتشتغل من غير Error — وهترجّع إجابة غلط.
النقد (بمعايير):
> - C1 — الفلترة الزمنية مطابقة للطلب؟ ❌ مفيش أي شرط على آخر 90 يوم. > - C2 — الطلبات الملغية والمرتجعة مستبعدة؟ ❌ بيجمع كل الحالات، فالعميل اللي رجّع كل طلباته ممكن يطلع «أعلى صرفًا». > - C3 — مستوى التجميع مطابق للسؤال؟ ✅ تجميع على العميل، سليم.
النسخة المعدلة:
SELECT customer_id, SUM(total) AS spend
FROM orders
WHERE created_at >= CURRENT_DATE - INTERVAL '90 days'
AND status NOT IN ('cancelled', 'refunded')
GROUP BY customer_id
ORDER BY spend DESC
LIMIT 5;نفس الموديل. كل اللي حصل إن حد سأله: «متأكد؟ بص على الزمن والحالات». ولاحظ إن الغلطتين من النوع اللي بيعدي من الاختبار السريع — الـ Query شغالة، والأرقام شكلها منطقي، والغلط مستخبي في المعنى.
<!-- Field 8: How it works (Layer 3) -->
1. Produce: الموديل بيكتب المسودة بشكل طبيعي. 2. Critique: نداء بدور «الناقد»: خد المهمة الأصلية + المسودة + معايير محددة، وطلّع تقرير: إيه اللي سقط وليه. 3. Revise: نداء تالت: المسودة + تقرير النقد ← نسخة معدلة بتعالج النقاط المذكورة تحديدًا.
وللناقد شكلين — والاختيار بينهم قرار هندسي مش تفصيلة:
| Self-Critique في نفس المحادثة | Critic منفصل (دور أو موديل تاني) | |
|---|---|---|
| الشكل | «راجع إجابتك: اذكر أهم 3 مشاكل، بعدين صحّح» في نفس الـ Thread | نداء مستقل بـ System Prompt للناقد — أو موديل مختلف خالص |
| التكلفة | أقل (سياق مشترك) | أعلى شوية |
| قوة النقد | أضعف — الموديل بيميل يدافع عن كلامه | أقوى — مفيش «التزام» بالمسودة، وموديل مختلف بيكسر الـ Self-preference |
| إمتى | تحسين سريع رخيص لمخرجات متوسطة الأهمية | جودة جدية، أو Batch إنتاجي |
### Reflexion — لما النقد يبقى ليه ذاكرة ودليل
⚠️ خد بالك من الاسم: Reflexion بالـ x — اسم علم لنمط من ورقة بحثية، مش غلطة إملائية.
الـ Reflection العادي بينقد جوه المحاولة الواحدة وبينسى. الـ Reflexion بيضيف حاجتين:
1. إشارة خارجية موضوعية: بدل رأي الناقد لوحده — Tests بتنجح أو تفشل، Error من التنفيذ، درجة من Eval. حاجة مش بتجامل. 2. ذاكرة للفشل: بعد كل محاولة فاشلة، الموديل بيكتب خلاصة قصيرة («جربت X، فشل عشان Y — المرة الجاية هجرب Z») وبتتحقن في الـ Prompt بتاع المحاولة الجاية.
النتيجة: المحاولة الرابعة مش بتبدأ من الصفر — بتبدأ من ملف الدروس المستفادة. النمط ده بيكسّر الدنيا في المهام اللي ليها إجابة قابلة للفحص: كود لازم يعدي Unit Tests، استعلام نتيجته بتتقارن بنتيجة معروفة، مسألة ليها حل صح. ولو مفيش إشارة خارجية؟ Reflexion بيرجع Reflection عادي — بس باسم أفخم.
<!-- Field 11: Technical explanation (Layer 4) -->
النقطة الهندسية الوحيدة اللي بتفرق بين Reflection شغال و Reflection ديكور: الناقد لازم ياخد Rubric صريح. شكل الـ Critic Prompt الصح:
You are a strict code reviewer. Evaluate the SQL below against
these criteria — for each one, output PASS or FAIL + one line why:
1. Time filter matches the request exactly
2. Cancelled and refunded orders are excluded
3. Aggregation level matches the question
4. Only existing columns are used (schema attached)
Then list the required fixes, most severe first.
Do NOT rewrite the query yourself.ليه السطر الأخير؟ لأن من غيره الناقد «بيهرب» من النقد للتأليف — يكتب لك نسخة جديدة على مزاجه بدل تقرير تقدر تبني عليه. فصل الأدوار بيخلي كل نداء متخصص وقابل للفحص.
وحاجتين عمليتين كمان:
- خلّي تقرير الناقد Structured Output (JSON فيه PASS/FAIL لكل معيار) — عشان كودك يقدر يوقف الـ Loop برمجيًا لما كله يعدي، بدل ما تعمل Parsing لكلام إنشائي.
- سقف الجولات في الكود مش في النية:
MAX_ROUNDS = 2من أول يوم. الأسباب في قسم التكلفة.
💡 نصيحة: الـ Rubric اللي كتبته للناقد ده هو نفسه بذرة الـ Evaluation بتاعك: نفس المعايير دي هي اللي هتتحول لـ Golden Set و LLM-as-Judge في دومين AI Evaluation. فلسفة BuildAI واحدة في الاتنين: من غير معايير، أنت مش بتقيّم — أنت بتخمّن. الفرق بس إن الناقد شغال جوه الـ Loop، والـ Eval بيحكم من بره.
<!-- Field 21: Cost considerations -->
تمرين (20 دقيقة): خد مهمة تلخيص حقيقية — صفحة من Docs مشروعك مثلًا. (1) خد المسودة الأولى من الموديل واحفظها. (2) اكتب Rubric من 4 معايير: دقة المعلومات، تغطية النقاط الأساسية، صفر معلومات مخترعة، طول ≤ 150 كلمة. (3) شغّل جولة Critique ← Revise بالـ Rubric ده. (4) اعرض النسختين على زميل من غير ما تقوله أنهي أنهي — وخليه يختار.
لو المعدلة كسبت: مبروك، بقيت تعرف تشتري جودة بـ 3×. ولو ماكسبتش؟ اتعلمت درس أغلى: المراجعة مش مجانية ومش دايمًا مستاهلة — وقياسك ده نفسه كان Evaluation صغير.
<!-- Field 28: Knowledge check (scenario-based per F5) -->
| # | ❌ الغلط | ✅ الصح |
|---|---|---|
| 1 | الناقد المجامل: «قيّم الإجابة دي» من غير معايير — والموديل مؤدب بطبعه: «إجابة شاملة وممتازة!» | Rubric صريح + PASS/FAIL إجباري لكل معيار + تعليمة «اذكر أسوأ حاجة في المسودة» — خلّي المجاملة صعبة تركيبيًا |
| 2 | نقد الأسلوب بدل الجوهر: الناقد بيلمّع الصياغة والغلطة المنطقية قاعدة في مكانها | رتّب المعايير: الصحة والاكتمال والأمان الأول — والأسلوب آخر بند، لو أصلًا موجود |
| 3 | Reflection loops: التعديل بيجيب مشكلة، ونقدها بيرجّع المشكلة الأولى — وهكذا للأبد | سقف جولات (1–2) + شرط توقف واضح: كل المعايير PASS أو الـ Budget خلص |
| 4 | مراجعة كل حاجة: بتدفع 3× على ردود مكانتش محتاجة | فعّل النمط للمخرجات المهمة بس — أو لما Validation أرخص يفشل الأول |
| 5 | رأي بدل فاحص: عندك Unit Tests وبتسأل الناقد «الكود صح؟» | شغّل الـ Tests وحقن نتيجتها في المحاولة الجاية — الكود اللي بيتنفذ أصدق من أي رأي (ودي روح الـ Reflexion) |
<!-- Field 16: When to use it (Layer 7a) -->
💸 التكلفة
جولة المراجعة الواحدة = تلات نداءات بدل واحد. خلينا نحسبها على تلخيص تقرير:
> 💸 أرقام قابلة للتغير *(Volatile fragment — أسعار نموذجية للتوضيح؛ راجع أسعار مزوّدك الحالية)*: $3/مليون Input Token و $15/مليون Output Token.
| النداء | الحساب | التكلفة |
|---|---|---|
| Produce | Input 1,000 → $0.003؛ Output 600 → $0.009 | $0.012 |
| Critique | Input (المهمة + المسودة + الـ Rubric) 1,800 → $0.005؛ Output 300 → $0.005 | $0.010 |
| Revise | Input (المسودة + النقد) 2,000 → $0.006؛ Output 600 → $0.009 | $0.015 |
| الإجمالي بجولة واحدة | مقابل $0.012 من غير مراجعة | ~$0.037 ≈ 3× |
على 5,000 ملخص في الشهر: ~$185 بدل ~$60. جولة تانية؟ زوّد ~$0.025 لكل ملخص كمان — وهنا الخبر المهم: أغلب التحسن بييجي من الجولة الأولى. التانية بتضيف أقل، والتالتة غالبًا بتنقل الجودة يمين وشمال مش لفوق. خدها قاعدة عملية — مش قانون فيزيا — بس اكسرها بقياس، مش بأمل.
القرار في الآخر بسيط: الجودة الزيادة تستاهل 3×؟ تقرير رايح لعميل — أيوه. رد Chat سريع — غالبًا لأ.
<!-- Field 14: Common mistakes -->
- مخرجات بتتسلم لحد: تقارير، إيميلات مهمة، كود هيتراجع — أي حاجة «أول انطباع» فيها بيفرق.
- مهام قابلة للفحص وفيها Tests أو Evals: روح على Reflexion مباشرة — إشارة خارجية + ذاكرة فشل.
- جودة أول محاولة مش كفاية وتغيير الموديل مش مطروح: المراجعة أرخص من موديل أغلى في حالات كتير — احسبها.
- Agents طويلة المدى: ذاكرة الفشل بتمنع تكرار نفس الغلطة جوه نفس المهمة.
<!-- Field 17: When NOT to use it (Layer 7b) -->
- ردود سريعة الجودة المقبولة فيها كفاية: شات عام، اقتراحات، مسودات داخلية — 3× تكلفة على فايدة هامشية.
- الـ Latency حساس: تلات نداءات متسلسلة ≈ تلات أضعاف الانتظار. في مسار تفاعلي ساخن، ده محسوس ومؤلم.
- المشكلة شكلية مش جوهرية: مخرج ناقص Format معين؟ Structured Output + Validation بيحلوها بنداء واحد.
- المعايير كلها قابلة للأتمتة وقرار النجاح Pass/Fail: ساعتها أنت مش محتاج «مراجعة» — أنت محتاج بوابة جودة. ده المفهوم الجاي: Evaluator–Optimizer.
<!-- Field 23: Related concepts -->
- جوه BuildAI (بالترتيب): نمط الـ Evaluator–Optimizer (المفهوم الجاي في الـ Pack ده) ← Evaluating RAG systems ← دومين AI Evaluation لما ينزل.
- الأوراق الأصلية: *"Reflexion: Language Agents with Verbal Reinforcement Learning"* — Shinn et al., 2023، و *"Self-Refine: Iterative Refinement with Self-Feedback"* — Madaan et al., 2023. الاتنين مقروئين نسبيًا — وهتلاحظ إن أرقام التحسن في الأوراق جاية من مهام قابلة للفحص. مش صدفة.
<!-- Reading→building exit — single primary CTA per Phase 1 §6 -->