معمارية الوكلاء المتعددين
محادثات AutoGen
4 دقيقة للقراءة
إطار عمل AutoGen من Microsoft يتخذ نهجاً فريداً: الوكلاء يتواصلون من خلال المحادثات، محاكين كيف يتعاون البشر في الدردشة. صدر في 2023 ويتطور بسرعة، أصبح الخيار الأول لأنظمة الوكلاء المتعددين.
النموذج المحادثي
على عكس الأُطر المبنية على المهام، وكلاء AutoGen يتحدثون لبعضهم بلغة طبيعية بالتناوب.
# إعداد محادثة AutoGen
from autogen import AssistantAgent, UserProxyAgent
# إنشاء وكلاء بشخصيات مميزة
assistant = AssistantAgent(
name="Assistant",
system_message="أنت مساعد ذكاء اصطناعي مفيد.",
llm_config={"model": "gpt-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 import GroupChat, GroupChatManager
# وكلاء متخصصون
coder = AssistantAgent(
name="Coder",
system_message="أنت تكتب كود Python. أخرج فقط كتل الكود."
)
reviewer = AssistantAgent(
name="Reviewer",
system_message="أنت تراجع الكود بحثاً عن الأخطاء والتحسينات."
)
executor = UserProxyAgent(
name="Executor",
code_execution_config={"work_dir": "workspace"}
)
# إنشاء دردشة المجموعة
groupchat = GroupChat(
agents=[coder, reviewer, executor],
messages=[],
max_round=10
)
manager = GroupChatManager(groupchat=groupchat)
# بدء المحادثة
executor.initiate_chat(
manager,
message="أنشئ كاشط ويب لعناوين الأخبار."
)
استراتيجيات اختيار المتحدث
من يتحدث بعد ذلك؟ AutoGen يقدم عدة استراتيجيات:
| الاستراتيجية | الوصف | حالة الاستخدام |
|---|---|---|
auto |
LLM يقرر المتحدث التالي | المحادثات العامة |
round_robin |
الوكلاء يتناوبون | سير العمل المنظم |
random |
اختيار عشوائي | العصف الذهني |
manual |
الإنسان يختار | التنفيذ المُشرف عليه |
groupchat = GroupChat(
agents=[coder, reviewer, tester],
speaker_selection_method="round_robin", # ترتيب متوقع
max_round=12
)
المحادثات غير المتزامنة
للإنتاج، AutoGen يدعم التنفيذ غير المتزامن:
import asyncio
from autogen 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 مقابل الأُطر الأخرى
| الميزة | AutoGen | CrewAI | LangGraph |
|---|---|---|---|
| النموذج | محادثات | مهام/أدوار | رسوم حالة |
| منحنى التعلم | منخفض | متوسط | عالي |
| المرونة | عالية | متوسطة | عالية جداً |
| التنقيح | سجلات الدردشة | تتبع المهام | تاريخ الحالة |
| الأفضل لـ | التعاون الديناميكي | سير العمل المنظم | المنطق المعقد |
ملاحظة نيردية: نموذج المحادثة في AutoGen يسهّل النمذجة الأولية لكن يمكن أن يؤدي لتشغيلات مطولة ومكلفة. حدد شروط إنهاء صارمة.
الوحدة التالية: التعامل مع الجلسات التي تتجاوز استدعاء API واحد. :::