الدرس 4 من 20

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

محادثات AutoGen

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

إطار عمل AutoGen من Microsoft يتخذ نهجاً فريداً: الوكلاء يتواصلون من خلال المحادثات، محاكين كيف يتعاون البشر في الدردشة. صدر في 2023 ويتطور بسرعة، أصبح الخيار الأول لأنظمة الوكلاء المتعددين.

النموذج المحادثي

على عكس الأُطر المبنية على المهام، وكلاء AutoGen يتحدثون لبعضهم بلغة طبيعية بالتناوب.

# إعداد محادثة AutoGen
from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient

# إنشاء وكلاء بشخصيات مميزة
assistant = AssistantAgent(
    name="Assistant",
    system_message="أنت مساعد ذكاء اصطناعي مفيد.",
    model_client=OpenAIChatCompletionClient(model="gpt-5.4")
)

user_proxy = UserProxyAgent(
    name="User",
    human_input_mode="NEVER",  # آلي بالكامل
    code_execution_config={"work_dir": "workspace"}
)

# بدء المحادثة - الوكلاء يتناوبون
user_proxy.initiate_chat(
    assistant,
    message="اكتب دالة Python لحساب أرقام فيبوناتشي."
)

دردشة المجموعة: وكلاء متعددون

AutoGen يتألق مع محادثات المجموعة حيث يتعاون وكلاء متعددون.

from autogen_agentchat.agents import AssistantAgent, UserProxyAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient

# وكلاء متخصصون
coder = AssistantAgent(
    name="Coder",
    system_message="أنت تكتب كود Python. أخرج فقط كتل الكود."
)

reviewer = AssistantAgent(
    name="Reviewer",
    system_message="أنت تراجع الكود بحثاً عن الأخطاء والتحسينات."
)

executor = UserProxyAgent(
    name="Executor",
    code_execution_config={"work_dir": "workspace"}
)

# إنشاء دردشة المجموعة
groupchat = RoundRobinGroupChat(
    participants=[coder, reviewer, executor],
    max_turns=10
)

# بدء المحادثة
result = await groupchat.run(
    task="أنشئ كاشط ويب لعناوين الأخبار."
)

استراتيجيات اختيار المتحدث

من يتحدث بعد ذلك؟ AutoGen يقدم عدة استراتيجيات:

الاستراتيجيةالوصفحالة الاستخدام
autoLLM يقرر المتحدث التاليالمحادثات العامة
round_robinالوكلاء يتناوبونسير العمل المنظم
randomاختيار عشوائيالعصف الذهني
manualالإنسان يختارالتنفيذ المُشرف عليه
groupchat = RoundRobinGroupChat(
    participants=[coder, reviewer, tester],
    max_turns=12
)

المحادثات غير المتزامنة

للإنتاج، AutoGen يدعم التنفيذ غير المتزامن:

import asyncio
from autogen_agentchat.agents import AssistantAgent

async def run_agent_conversation():
    agent1 = AssistantAgent(name="Analyst")
    agent2 = AssistantAgent(name="Strategist")

    # دردشة غير متزامنة
    result = await agent1.a_initiate_chat(
        agent2,
        message="حلل اتجاهات السوق للربع الأول 2025."
    )
    return result

# تشغيل محادثات متعددة بالتوازي
results = await asyncio.gather(
    run_agent_conversation(),
    run_agent_conversation(),
    run_agent_conversation()
)

شروط الإنهاء

تحكم في متى تنتهي المحادثات:

assistant = AssistantAgent(
    name="Assistant",
    is_termination_msg=lambda x: "TASK_COMPLETE" in x.get("content", ""),
    max_consecutive_auto_reply=5  # حد أمان
)

AutoGen مقابل الأُطر الأخرى

الميزةAutoGenCrewAILangGraph
النموذجمحادثاتمهام/أدواررسوم حالة
منحنى التعلممنخفضمتوسطعالي
المرونةعاليةمتوسطةعالية جداً
التنقيحسجلات الدردشةتتبع المهامتاريخ الحالة
الأفضل لـالتعاون الديناميكيسير العمل المنظمالمنطق المعقد

ملاحظة نيردية: نموذج المحادثة في AutoGen يسهّل النمذجة الأولية لكن يمكن أن يؤدي لتشغيلات مطولة ومكلفة. حدد شروط إنهاء صارمة.

الوحدة التالية: التعامل مع الجلسات التي تتجاوز استدعاء API واحد. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

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

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.