تخطّى إلى المحتوى
العودة للمدونة

أنظمة الوكلاء المتعددين باستخدام CrewAI: تنسيق فرق الذكاء الاصطناعي

تعلّم كيفية بناء أنظمة وكلاء متعددين باستخدام CrewAI من خلال تعريف الوكلاء بأدوار ومهام وأدوات، بما في ذلك مثال كامل لخط أنابيب من البحث إلى التقرير.

MH محمود هاشم · ٢٨ نوفمبر ٢٠٢٤ · 5 دقيقة قراءة
Team collaboration concept with multiple connected workstations

مقدمة

تمثّل أنظمة الوكلاء المتعددين تطورًا كبيرًا في تصميم تطبيقات الذكاء الاصطناعي. بدلًا من الاعتماد على وكيل واحد للتعامل مع كل جانب من مهمة معقدة، يمكنك تنسيق عدة وكلاء متخصصين يتعاونون، كل منهم يركّز على ما يبرع فيه. CrewAI هو إطار بُني خصيصًا لهذا النموذج، مما يجعل من السهل تعريف الوكلاء بأدوار مميزة، وتكليفهم بمهام، وإدارة تفاعلاتهم.

يستكشف هذا المقال كيف يعمل CrewAI ويمرّ عبر بناء خط أنابيب كامل من البحث إلى التقرير.

كيف يعمل CrewAI

بُني CrewAI حول أربعة مفاهيم أساسية:

الوكلاء

الوكيل وحدة مستقلة تؤدي دورًا محددًا. لكل وكيل:

  • دور يُعرّف تخصصه (مثلًا “محلل أبحاث”)
  • هدف يصف ما يسعى لتحقيقه
  • قصة خلفية تشكّل سلوكه واتخاذ قراراته
  • أدوات يمكنه استخدامها لإنجاز مهامه

المهام

المهام تكليفات محددة تُعطى للوكلاء. لكل مهمة:

  • وصف لما يجب القيام به
  • مخرجات متوقعة تُعرّف معايير النجاح
  • وكيل مُكلّف مسؤول عن إكمالها

الطواقم

الطاقم هو مجموعة الوكلاء والمهام التي تعمل معًا. يُعرّف الطاقم:

  • العملية لتنفيذ المهام (متسلسلة أو هرمية)
  • الوكلاء و المهام المشاركة
  • التكوين مثل مستوى التفصيل وإعدادات الذاكرة

الأدوات

الأدوات قدرات يمكن للوكلاء استخدامها، مثل البحث في الويب، أو قراءة الملفات، أو استدعاء API، أو دوال مخصصة. يتكامل CrewAI مع منظومة أدوات LangChain، مما يمنحك الوصول إلى مئات الأدوات الجاهزة.

تثبيت CrewAI

pip install crewai crewai-tools

اضبط مفاتيح API:

export OPENAI_API_KEY=your-key-here
export SERPER_API_KEY=your-key-here  # للبحث في الويب

تعريف الوكلاء

لنبنِ خط أنابيب من البحث إلى التقرير بثلاثة وكلاء: باحث، وكاتب، ومحرر.

from crewai import Agent, Task, Crew, Process
from crewai_tools import SerperDevTool, WebsiteSearchTool

# تهيئة الأدوات
search_tool = SerperDevTool()
web_tool = WebsiteSearchTool()

# وكيل البحث
researcher = Agent(
    role="محلل أبحاث أول",
    goal="إيجاد معلومات شاملة ودقيقة حول الموضوع المحدد",
    backstory="""أنت محلل أبحاث ذو خبرة بارع في إيجاد المعلومات 
    ذات الصلة وتحديد الرؤى الرئيسية. تتميز بقدرتك على التمييز 
    بين المصادر الموثوقة وغير الموثوقة وتستشهد دائمًا بمصادرك.""",
    tools=[search_tool, web_tool],
    verbose=True,
    allow_delegation=False
)

# وكيل الكتابة
writer = Agent(
    role="كاتب تقني",
    goal="تحويل نتائج البحث إلى محتوى واضح وجذاب",
    backstory="""أنت كاتب تقني ماهر متخصص في جعل المواضيع 
    المعقدة سهلة المنال. تكتب بوضوح ودقة، وتهيكل دائمًا 
    المحتوى بتدفق منطقي وسرد مقنع.""",
    verbose=True,
    allow_delegation=False
)

# وكيل التحرير
editor = Agent(
    role="محرر محتوى",
    goal="ضمان دقة المحتوى وجودة هيكله وصقله",
    backstory="""أنت محرر دقيق بسنوات من الخبرة في النشر. 
    تتحقق من الدقة الواقعية والصحة النحوية والجودة 
    العامة. لا تساوم أبدًا في المعايير.""",
    verbose=True,
    allow_delegation=True
)

تعريف المهام

تحدّد كل مهمة ما يجب أن ينتجه الوكيل:

research_task = Task(
    description="""أجرِ بحثًا شاملًا حول {topic}. 
    حدّد:
    1. المفاهيم والتعريفات الرئيسية
    2. الوضع الحالي والتطورات الأخيرة
    3. التحديات والقيود الرئيسية
    4. الأدوات والأطر والحلول البارزة
    5. الاتجاهات المستقبلية
    
    استخدم البحث في الويب لإيجاد مصادر حديثة وموثوقة. 
    قدّم ملخصًا منظمًا مع استشهادات.""",
    expected_output="تقرير بحثي مفصل مع 5-10 نتائج رئيسية، "
                    "كل منها مع استشهادات المصدر وشرح موجز.",
    agent=researcher
)

writing_task = Task(
    description="""باستخدام نتائج البحث، اكتب مقالًا شاملًا 
    حول {topic}. يجب أن يحتوي المقال على:
    1. مقدمة جذابة
    2. تغطية جميع نتائج البحث الرئيسية
    3. أمثلة عملية أو مقتطفات كود عند الحاجة
    4. هيكلة بعناوين واضحة
    5. بين 1000-1500 كلمة
    
    اكتب بنبرة احترافية لكن سهلة المنال.""",
    expected_output="مقال جيد الهيكلة من 1000-1500 كلمة "
                    "بعناوين واضحة وأمثلة عملية.",
    agent=writer
)

editing_task = Task(
    description="""راجع وحرّر المقال من أجل:
    1. الدقة الواقعية (تحقق مع البحث)
    2. الصحة النحوية
    3. التدفق المنطقي والبنية
    4. الوضوح وقابلية القراءة
    5. نبرة وأسلوب متسقين
    
    قدّم النسخة النهائية المصقولة.""",
    expected_output="مقال مصقول جاهز للنشر بدون أخطاء "
                    "وبقابلية قراءة ممتازة.",
    agent=editor
)

تجميع الطاقم

crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, writing_task, editing_task],
    process=Process.sequential,
    verbose=True,
    memory=True,
    cache=True
)

result = crew.kickoff(inputs={"topic": "تأثير الذكاء الاصطناعي على اختبار البرمجيات"})
print(result)

العمليات المتسلسلة مقابل الهرمية

العملية المتسلسلة

تُنفّذ المهام بالترتيب، مع تمرير مخرجات كل مهمة إلى التالية. هذا بسيط ومتوقع:

crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, writing_task, editing_task],
    process=Process.sequential
)

العملية الهرمية

وكيل مدير ينسّق الطاقم، يفوّض المهام ويدير سير العمل. هذا أكثر مرونة لكن يضيف عبئًا:

crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, writing_task, editing_task],
    process=Process.hierarchical,
    manager_llm=ChatOpenAI(model="gpt-4o"),
    verbose=True
)

الأدوات المخصصة

يمكنك إنشاء أدوات مخصصة لاستخدامها من قبل الوكلاء:

from crewai.tools import tool

@tool("أداة استعلام قاعدة البيانات")
def query_database(query: str) -> str:
    """استعلام قاعدة بيانات الشركة باستخدام استعلام SQL.
    Args:
        query: نص استعلام SQL
    Returns:
        نتائج الاستعلام كنص منسق
    """
    # منطق اتصال قاعدة البيانات هنا
    import sqlite3
    conn = sqlite3.connect("company.db")
    cursor = conn.execute(query)
    results = cursor.fetchall()
    conn.close()
    return str(results)

# إضافة إلى وكيل
analyst = Agent(
    role="محلل بيانات",
    goal="استخراج رؤى من قاعدة بيانات الشركة",
    backstory="أنت خبير في كتابة SQL وتحليل البيانات.",
    tools=[query_database]
)

أفضل الممارسات

  1. اكتب قصصًا خلفية تفصيلية: تؤثر القصة الخلفية بشكل كبير على سلوك الوكيل. كن محددًا حول الخبرات والتفضيلات والمعايير.

  2. حدّد مخرجات متوقعة واضحة: المخرجات المتوقعة الغامضة تؤدي إلى نتائج غير متسقة. حدّد التنسيق والطول ومتطلبات المحتوى.

  3. استخدم الذاكرة للسياق: فعّل الذاكرة ليتمكن الوكلاء من الإشارة إلى التفاعلات السابقة والحفاظ على السياق عبر المهام.

  4. حدّ التفويض في الوضع المتسلسل: التفويض يعمل بشكل أفضل في الوضع الهرمي. في الوضع المتسلسل، أبقِ الوكلاء مركزين على مهامهم المحددة.

  5. اختر LLM المناسب لكل وكيل: ليس كل وكيل يحتاج أغلى نموذج. استخدم نماذج أصغر للمهام البسيطة مثل التنسيق أو التحليل الأساسي.

خاتمة

يجعل CrewAI تنسيق الوكلاء المتعددين متاحًا من خلال توفير تجريد نظيف فوق تعقيد تنسيق الوكلاء. من خلال تعريف الوكلاء بأدوار واضحة، ومهام بمخرجات محددة، وطواقم بعمليات مناسبة، يمكنك بناء سير عمل ذكاء اصطناعي متطور يستفيد من التخصص والتعاون.

خط أنابيب البحث إلى التقرير المُستعرض هنا هو مجرد مثال واحد. تنطبق نفس الأنماط على أي عملية متعددة الخطوات: توجيه دعم العملاء، خطوط أنابيب مراجعة الكود، سير عمل تحليل البيانات، والمزيد. ابدأ بطاقم متسلسل بسيط، ثم أضف التعقيد مع نمو احتياجاتك.

#CrewAI #AI Agents #Multi-Agent

مقالات ذات صلة

لنبني شيئاً رائعاً معاً

هل أنت مستعد لأتمتة عمليات عملك وتوفير مئات الساعات كل شهر؟ لنتحدث عن مشروعك.