الدرس 3 من 20

معمارية الوكلاء المتعددين

استراتيجيات التنسيق

4 دقيقة للقراءة

كيف تنسق وكلاء متعددين؟ استراتيجية التنسيق تحدد من يقرر ما يحدث بعد ذلك وكيف يتدفق العمل عبر النظام.

ثلاثة مناهج رئيسية

1. هرمي (مدير-عمال)

وكيل مدير مركزي يعيّن المهام وينسق العمال.

# التنسيق الهرمي مع CrewAI
from crewai import Crew, Process

crew = Crew(
    agents=[manager, researcher, writer, reviewer],
    tasks=[research_task, write_task, review_task],
    process=Process.hierarchical,  # المدير يتحكم بالتدفق
    manager_agent=manager
)

# المدير يقرر:
# - أي وكيل يتعامل مع كل مهمة
# - متى ينتقل للمهمة التالية
# - كيف يتعامل مع الإخفاقات

المزايا: مسؤولية واضحة، تدفق متوقع، سهل التنقيح العيوب: عنق زجاجة المدير، نقطة فشل واحدة

2. ند-لند (تعاوني)

الوكلاء يتواصلون مباشرة بدون منسق مركزي.

# ند-لند مع تسليمات مباشرة
class PeerAgent:
    def __init__(self, name: str, peers: dict):
        self.name = name
        self.peers = peers  # الاسم -> نسخة الوكيل

    async def process(self, task: dict) -> dict:
        result = await self.do_work(task)

        # تحديد الند التالي بناءً على النتيجة
        if result["needs_review"]:
            return await self.peers["reviewer"].process(result)
        elif result["needs_more_data"]:
            return await self.peers["researcher"].process(result)
        else:
            return result

المزايا: لا عنق زجاجة، مرن، قابل للتكيف العيوب: تنسيق معقد، أصعب للتتبع، حلقات محتملة

3. سرب (سلوك ناشئ)

الوكلاء يعملون باستقلالية باتباع قواعد بسيطة؛ السلوك المعقد ينشأ.

# تنسيق شبيه بالسرب
class SwarmAgent:
    def __init__(self, role: str, shared_board: TaskBoard):
        self.role = role
        self.board = shared_board

    async def run(self):
        while True:
            # كل وكيل يختار مهام تطابق دوره
            task = await self.board.claim_task(
                filter=lambda t: t.type == self.role
            )
            if not task:
                await asyncio.sleep(1)
                continue

            result = await self.process(task)

            # نشر النتائج أو مهام جديدة للوحة
            if result.creates_new_tasks:
                for new_task in result.new_tasks:
                    await self.board.post_task(new_task)

            await self.board.complete_task(task.id, result)

المزايا: قابل للتوسع بشكل كبير، تنظيم ذاتي، متحمل للأخطاء العيوب: غير متوقع، صعب الفهم، كابوس للتنقيح

اختيار استراتيجيتك

السيناريو أفضل استراتيجية
سير عمل محدد جيداً هرمي
مهام ديناميكية متغيرة ند-لند
توازي ضخم سرب
الحاجة لسجل تدقيق هرمي
تكيف في الوقت الفعلي ند-لند
بحث/استكشاف سرب

مثال هجين: سرب مُشرَف عليه

# مشرف + عمال سرب
class SupervisedSwarm:
    def __init__(self, supervisor: Agent, workers: list[SwarmAgent]):
        self.supervisor = supervisor
        self.workers = workers
        self.board = TaskBoard()

    async def execute(self, goal: str):
        # المشرف يقسم الهدف إلى مهام
        tasks = await self.supervisor.decompose(goal)
        for task in tasks:
            await self.board.post_task(task)

        # العمال يتجمعون على المهام
        worker_tasks = [w.run() for w in self.workers]

        # المشرف يراقب ويتدخل إذا لزم الأمر
        while not self.board.all_complete():
            status = self.board.get_status()
            if status.stuck_tasks:
                await self.supervisor.unstick(status.stuck_tasks)
            await asyncio.sleep(5)

ملاحظة نيردية: ابدأ بالهرمي، تطور إلى ند-لند عندما تفهم مجالك. السرب فقط للمشاكل القابلة للتوازي حقاً.

التالي: نهج Microsoft AutoGen الفريد لمحادثات الوكلاء المتعددين. :::

اختبار

الوحدة 1: معمارية الوكلاء المتعددين

خذ الاختبار