الانتقال إلى المحتوى الرئيسي

نظرة عامة

تدفقات CrewAI هي ميزة قوية مصممة لتبسيط إنشاء وإدارة سير عمل الذكاء الاصطناعي. تتيح التدفقات للمطورين دمج وتنسيق مهام البرمجة وفرق Crew بكفاءة، مما يوفر إطار عمل متين لبناء أتمتة ذكاء اصطناعي متطورة. تتيح لك التدفقات إنشاء سير عمل منظم يعتمد على الأحداث. فهي توفر طريقة سلسة لربط مهام متعددة وإدارة الحالة والتحكم في تدفق التنفيذ في تطبيقات الذكاء الاصطناعي الخاصة بك. باستخدام التدفقات، يمكنك بسهولة تصميم وتنفيذ عمليات متعددة الخطوات تستفيد من الإمكانيات الكاملة لـ CrewAI.
  1. تبسيط إنشاء سير العمل: ربط فرق Crew والمهام المتعددة بسهولة لإنشاء سير عمل ذكاء اصطناعي معقد.
  2. إدارة الحالة: تجعل التدفقات إدارة ومشاركة الحالة بين المهام المختلفة في سير العمل أمرًا سهلًا للغاية.
  3. بنية تعتمد على الأحداث: مبنية على نموذج يعتمد على الأحداث، مما يتيح سير عمل ديناميكي وسريع الاستجابة.
  4. تحكم مرن في التدفق: تنفيذ المنطق الشرطي والحلقات والتفرع ضمن سير العمل.

البدء

لنقم بإنشاء تدفق بسيط حيث ستستخدم OpenAI لإنشاء مدينة عشوائية في مهمة واحدة ثم استخدام تلك المدينة لإنشاء حقيقة ممتعة في مهمة أخرى.
Code
Flow Visual image في المثال أعلاه، أنشأنا تدفقًا بسيطًا يولّد مدينة عشوائية باستخدام OpenAI ثم يولّد حقيقة ممتعة عن تلك المدينة. يتكون التدفق من مهمتين: generate_city و generate_fun_fact. مهمة generate_city هي نقطة البداية للتدفق، ومهمة generate_fun_fact تستمع لمخرجات مهمة generate_city. يتلقى كل مثيل من التدفق تلقائيًا معرّفًا فريدًا (UUID) في حالته، مما يساعد في تتبع وإدارة عمليات تنفيذ التدفق. يمكن للحالة أيضًا تخزين بيانات إضافية (مثل المدينة المولّدة والحقيقة الممتعة) التي تستمر طوال تنفيذ التدفق. عند تشغيل التدفق، سيقوم بما يلي:
  1. توليد معرّف فريد لحالة التدفق
  2. توليد مدينة عشوائية وتخزينها في الحالة
  3. توليد حقيقة ممتعة عن تلك المدينة وتخزينها في الحالة
  4. طباعة النتائج في وحدة التحكم
يمكن أن يكون المعرّف الفريد للحالة والبيانات المخزّنة مفيدًا لتتبع عمليات تنفيذ التدفق والحفاظ على السياق بين المهام. ملاحظة: تأكد من إعداد ملف .env لتخزين OPENAI_API_KEY الخاص بك. هذا المفتاح ضروري للمصادقة على طلبات OpenAI API.

@start()

يحدد المزخرف @start() نقاط الدخول للتدفق. يمكنك:
  • تعريف عدة نقاط بداية غير مشروطة: @start()
  • ربط البداية بدالة سابقة أو تسمية موجّه: @start("method_or_label")
  • توفير شرط قابل للاستدعاء للتحكم في وقت تنفيذ البداية
جميع دوال @start() المستوفية للشروط ستُنفَّذ (غالبًا بالتوازي) عند بدء أو استئناف التدفق.

@listen()

يُستخدم المزخرف @listen() لتحديد دالة كمستمع لمخرجات مهمة أخرى في التدفق. ستُنفَّذ الدالة المزخرفة بـ @listen() عندما تُصدر المهمة المحددة مخرجاتها. يمكن للدالة الوصول إلى مخرجات المهمة التي تستمع إليها كمعامل.

الاستخدام

يمكن استخدام المزخرف @listen() بعدة طرق:
  1. الاستماع لدالة بالاسم: يمكنك تمرير اسم الدالة التي تريد الاستماع إليها كسلسلة نصية. عند اكتمال تلك الدالة، سيتم تشغيل دالة المستمع.
    Code
  2. الاستماع لدالة مباشرة: يمكنك تمرير الدالة نفسها. عند اكتمال تلك الدالة، سيتم تشغيل دالة المستمع.
    Code

مخرجات التدفق

الوصول إلى مخرجات التدفق والتعامل معها أمر أساسي لدمج سير عمل الذكاء الاصطناعي في التطبيقات أو الأنظمة الأكبر. توفر تدفقات CrewAI آليات مباشرة لاسترداد المخرجات النهائية والوصول إلى النتائج الوسيطة وإدارة الحالة العامة للتدفق.

استرداد المخرجات النهائية

عند تشغيل تدفق، يتم تحديد المخرجات النهائية بواسطة آخر دالة تكتمل. تُعيد دالة kickoff() مخرجات هذه الدالة الأخيرة. إليك كيفية الوصول إلى المخرجات النهائية:
Flow Visual image في هذا المثال، second_method هي آخر دالة تكتمل، لذا ستكون مخرجاتها هي المخرجات النهائية للتدفق. ستُعيد دالة kickoff() المخرجات النهائية، التي تُطبع بعد ذلك في وحدة التحكم. ستولّد دالة plot() ملف HTML الذي سيساعدك على فهم التدفق.

الوصول إلى الحالة وتحديثها

بالإضافة إلى استرداد المخرجات النهائية، يمكنك أيضًا الوصول إلى الحالة وتحديثها داخل التدفق. يمكن استخدام الحالة لتخزين ومشاركة البيانات بين الدوال المختلفة في التدفق. بعد تشغيل التدفق، يمكنك الوصول إلى الحالة لاسترداد أي معلومات تمت إضافتها أو تحديثها أثناء التنفيذ. إليك مثال على كيفية تحديث الحالة والوصول إليها:
Flow Visual image في هذا المثال، يتم تحديث الحالة بواسطة كل من first_method و second_method. بعد تشغيل التدفق، يمكنك الوصول إلى الحالة النهائية لرؤية التحديثات التي أجرتها هذه الدوال. من خلال ضمان إعادة مخرجات الدالة الأخيرة وتوفير الوصول إلى الحالة، تجعل تدفقات CrewAI من السهل دمج نتائج سير عمل الذكاء الاصطناعي في التطبيقات أو الأنظمة الأكبر، مع الحفاظ على الوصول إلى الحالة طوال تنفيذ التدفق.

مقاييس استخدام التدفق

بعد اكتمال تنفيذ التدفق، يمكنك الوصول إلى الخاصية usage_metrics لعرض إجمالي استخدام التوكنات عبر كل استدعاء لنموذج اللغة يتم خلال التشغيل — بما في ذلك الاستدعاءات من كل فريق (Crew) ينظمه التدفق، والاستدعاءات داخل أدوات الـ Agents، والاستدعاءات المباشرة لـ LLM.call(...) من دوال التدفق. هذا هو المكافئ على جانب الـ SDK للإجماليات المعروضة في واجهة CrewAI Enterprise.
Code
flow.usage_metrics ليست نفس flow.kickoff().token_usage. هذه الأخيرة ترجع فقط CrewOutput.token_usage لـ آخر دالة @listen أعادت CrewOutput، مما يعني أنها تعكس فقط الفريق الأخير وتتجاهل الفرق السابقة وكذلك أي استدعاءات مباشرة لـ LLM.call(...). استخدم flow.usage_metrics كلما احتجت إلى الإجمالي الكامل للتوكنات لتنفيذ التدفق.
كل حقل في UsageMetrics المُعاد هو مجموع جميع استدعاءات نموذج اللغة التي حدثت خلال استدعاء واحد لـ flow.kickoff(). تتم إعادة تعيين العدادات عند الاستدعاء التالي لـ kickoff() (وفي كل تكرار من kickoff_for_each)، لذلك لن تتكرر العدّات عبر التشغيلات المتتالية. يمكن قراءة هذه الخاصية بأمان في أي وقت بعد اكتمال kickoff()؛ قراءتها أثناء التنفيذ تُرجع المجموع الجزئي المتراكم حتى تلك اللحظة.

إدارة حالة التدفق

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

إدارة الحالة غير المهيكلة

في إدارة الحالة غير المهيكلة، يتم تخزين جميع الحالات في خاصية state لفئة Flow. يوفر هذا النهج مرونة، مما يمكّن المطورين من إضافة أو تعديل خصائص الحالة أثناء التشغيل دون تحديد مخطط صارم. حتى مع الحالات غير المهيكلة، تولّد تدفقات CrewAI تلقائيًا معرّفًا فريدًا (UUID) لكل مثيل حالة وتحافظ عليه.
Code
Flow Visual image ملاحظة: يتم توليد حقل id تلقائيًا والحفاظ عليه طوال تنفيذ التدفق. لا تحتاج إلى إدارته أو تعيينه يدويًا، وسيتم الحفاظ عليه حتى عند تحديث الحالة ببيانات جديدة. النقاط الرئيسية:
  • المرونة: يمكنك إضافة خصائص ديناميكيًا إلى self.state دون قيود محددة مسبقًا.
  • البساطة: مثالي لسير العمل البسيط حيث يكون هيكل الحالة بسيطًا أو متغيرًا بشكل كبير.

إدارة الحالة المهيكلة

تستفيد إدارة الحالة المهيكلة من مخططات محددة مسبقًا لضمان الاتساق وسلامة الأنواع عبر سير العمل. باستخدام نماذج مثل BaseModel من Pydantic، يمكن للمطورين تحديد الشكل الدقيق للحالة، مما يتيح تحققًا أفضل وإكمالًا تلقائيًا في بيئات التطوير. تتلقى كل حالة في تدفقات CrewAI تلقائيًا معرّفًا فريدًا (UUID) للمساعدة في تتبع وإدارة مثيلات الحالة. يتم توليد هذا المعرّف وإدارته تلقائيًا بواسطة نظام التدفق.
Code
Flow Visual image النقاط الرئيسية:
  • مخطط محدد: يحدد ExampleState هيكل الحالة بوضوح، مما يعزز قابلية قراءة الكود وصيانته.
  • سلامة الأنواع: يضمن استخدام Pydantic التزام خصائص الحالة بالأنواع المحددة، مما يقلل من أخطاء وقت التشغيل.
  • الإكمال التلقائي: يمكن لبيئات التطوير المتكاملة توفير إكمال تلقائي أفضل وفحص أخطاء بناءً على نموذج الحالة المحدد.

الاختيار بين إدارة الحالة غير المهيكلة والمهيكلة

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

استمرارية التدفق

يتيح مزخرف @persist الاستمرارية التلقائية للحالة في تدفقات CrewAI، مما يسمح لك بالحفاظ على حالة التدفق عبر عمليات إعادة التشغيل أو تنفيذات سير العمل المختلفة. يمكن تطبيق هذا المزخرف على مستوى الفئة أو مستوى الدالة، مما يوفر مرونة في كيفية إدارة استمرارية الحالة.

الاستمرارية على مستوى الفئة

عند التطبيق على مستوى الفئة، يقوم مزخرف @persist باستمرارية حالات جميع دوال التدفق تلقائيًا:

الاستمرارية على مستوى الدالة

للتحكم الأكثر دقة، يمكنك تطبيق @persist على دوال محددة:

تفرع الحالة المستمرة

يدعم @persist نمطين متميزين للترطيب في kickoff / kickoff_async:
  • kickoff(inputs={"id": <uuid>})استئناف: يحمّل أحدث لقطة لـ UUID المقدم ويستمر في الكتابة تحت نفس flow_uuid. يمتد التاريخ.
  • kickoff(restore_from_state_id=<uuid>)تفرع: يحمّل أحدث لقطة لـ UUID المقدم، يرطّب حالة التشغيل الجديد منها، ثم يعيّن state.id جديدًا (مولّدًا تلقائيًا، أو inputs["id"] إذا تم تثبيته). تذهب كتابات @persist للتشغيل الجديد تحت state.id الجديد؛ يتم الحفاظ على تاريخ تدفق المصدر.
إذا لم يطابق restore_from_state_id المقدم أي حالة مستمرة، يعود kickoff بصمت إلى السلوك الافتراضي — نفس سلوك inputs["id"] عند عدم العثور عليه. الجمع بين restore_from_state_id و from_checkpoint يطلق ValueError؛ اختر مصدر ترطيب واحدًا. تثبيت inputs["id"] أثناء التفرع يشارك مفتاح الاستمرارية مع تدفق آخر — عادةً ما تريد استخدام restore_from_state_id فقط.

كيف تعمل

  1. تعريف الحالة الفريد
    • تتلقى كل حالة تدفق UUID فريد تلقائيًا
    • يتم الحفاظ على المعرّف عبر تحديثات الحالة واستدعاءات الدوال
    • يدعم كلًا من الحالات المهيكلة (Pydantic BaseModel) وغير المهيكلة (القاموس)
  2. واجهة SQLite الافتراضية
    • SQLiteFlowPersistence هي واجهة التخزين الافتراضية
    • يتم حفظ الحالات تلقائيًا في قاعدة بيانات SQLite محلية
    • معالجة أخطاء متينة تضمن رسائل واضحة في حالة فشل عمليات قاعدة البيانات
  3. معالجة الأخطاء
    • رسائل خطأ شاملة لعمليات قاعدة البيانات
    • تحقق تلقائي من الحالة أثناء الحفظ والتحميل
    • ملاحظات واضحة عند مواجهة مشاكل في عمليات الاستمرارية

اعتبارات مهمة

  • أنواع الحالة: يتم دعم كل من الحالات المهيكلة (Pydantic BaseModel) وغير المهيكلة (القاموس)
  • المعرّف التلقائي: يتم إضافة حقل id تلقائيًا إذا لم يكن موجودًا
  • استعادة الحالة: يمكن للتدفقات الفاشلة أو المُعاد تشغيلها إعادة تحميل حالتها السابقة تلقائيًا
  • التنفيذ المخصص: يمكنك توفير تنفيذ FlowPersistence الخاص بك لاحتياجات التخزين المتخصصة

المزايا التقنية

  1. تحكم دقيق من خلال الوصول المنخفض المستوى
    • وصول مباشر لعمليات الاستمرارية لحالات الاستخدام المتقدمة
    • تحكم دقيق عبر مزخرفات الاستمرارية على مستوى الدوال
    • قدرات مدمجة لفحص الحالة وتصحيح الأخطاء
    • رؤية كاملة لتغييرات الحالة وعمليات الاستمرارية
  2. موثوقية معززة
    • استعادة تلقائية للحالة بعد أعطال النظام أو إعادة التشغيل
    • تحديثات حالة قائمة على المعاملات لسلامة البيانات
    • معالجة أخطاء شاملة مع رسائل خطأ واضحة
    • تحقق متين أثناء عمليات حفظ وتحميل الحالة
  3. بنية قابلة للتوسع
    • واجهة استمرارية قابلة للتخصيص من خلال واجهة FlowPersistence
    • دعم لحلول تخزين متخصصة تتجاوز SQLite
    • متوافقة مع كل من الحالات المهيكلة (Pydantic) وغير المهيكلة (dict)
    • تكامل سلس مع أنماط تدفق CrewAI الحالية
تركز بنية نظام الاستمرارية على الدقة التقنية وخيارات التخصيص، مما يتيح للمطورين الحفاظ على التحكم الكامل في إدارة الحالة مع الاستفادة من ميزات الموثوقية المدمجة.

التحكم في التدفق

المنطق الشرطي: or

تتيح لك دالة or_ في التدفقات الاستماع لعدة دوال وتشغيل دالة المستمع عندما تُصدر أي من الدوال المحددة مخرجاتها.
Flow Visual image عند تشغيل هذا التدفق، سيتم تشغيل دالة logger بواسطة مخرجات إما start_method أو second_method. تُستخدم دالة or_ للاستماع لعدة دوال وتشغيل دالة المستمع عندما تُصدر أي من الدوال المحددة مخرجاتها.

المنطق الشرطي: and

تتيح لك دالة and_ في التدفقات الاستماع لعدة دوال وتشغيل دالة المستمع فقط عندما تُصدر جميع الدوال المحددة مخرجاتها.
Flow Visual image عند تشغيل هذا التدفق، سيتم تشغيل دالة logger فقط عندما يُصدر كل من start_method و second_method مخرجاتهما. تُستخدم دالة and_ للاستماع لعدة دوال وتشغيل دالة المستمع فقط عندما تُصدر جميع الدوال المحددة مخرجاتها.

الموجّه

يتيح لك مزخرف @router() في التدفقات تحديد منطق توجيه شرطي بناءً على مخرجات دالة. يمكنك تحديد مسارات مختلفة بناءً على مخرجات الدالة، مما يتيح لك التحكم في تدفق التنفيذ ديناميكيًا.
Flow Visual image في المثال أعلاه، تولّد start_method قيمة منطقية عشوائية وتعيّنها في الحالة. تستخدم second_method مزخرف @router() لتحديد منطق توجيه شرطي بناءً على قيمة المنطقية. إذا كانت القيمة True، تُعيد الدالة "success"، وإذا كانت False، تُعيد "failed". تستمع third_method و fourth_method لمخرجات second_method وتُنفَّذ بناءً على القيمة المُعادة. عند تشغيل هذا التدفق، ستتغير المخرجات بناءً على القيمة المنطقية العشوائية المولّدة بواسطة start_method.

الإنسان في الحلقة (التغذية الراجعة البشرية)

يتطلب مزخرف @human_feedback CrewAI الإصدار 1.8.0 أو أعلى.
يتيح مزخرف @human_feedback سير عمل يتضمن تدخلًا بشريًا من خلال إيقاف تنفيذ التدفق مؤقتًا لجمع تغذية راجعة من إنسان. هذا مفيد لبوابات الموافقة ومراجعة الجودة ونقاط القرار التي تتطلب حكمًا بشريًا.
Code
عند تحديد emit، يتم تفسير التغذية الراجعة الحرة للإنسان بواسطة LLM وتُختصر إلى إحدى النتائج المحددة، والتي تُشغل بعد ذلك مزخرف @listen المقابل. يمكنك أيضًا استخدام @human_feedback دون توجيه لجمع التغذية الراجعة ببساطة:
Code
يمكنك الوصول إلى جميع التغذيات الراجعة المُجمّعة أثناء التدفق عبر self.last_human_feedback (الأحدث) أو self.human_feedback_history (جميع التغذيات الراجعة كقائمة). للحصول على دليل كامل حول التغذية الراجعة البشرية في التدفقات، بما في ذلك التغذية الراجعة غير المتزامنة/غير الحاجبة مع مزودين مخصصين (Slack، webhooks، إلخ)، انظر التغذية الراجعة البشرية في التدفقات.

إضافة Agents إلى التدفقات

يمكن دمج Agents بسلاسة في تدفقاتك، مما يوفر بديلًا خفيف الوزن لفرق Crew الكاملة عندما تحتاج إلى تنفيذ مهام أبسط وأكثر تركيزًا. إليك مثال على كيفية استخدام Agent ضمن تدفق لإجراء أبحاث السوق:
Flow Visual image يوضح هذا المثال عدة ميزات رئيسية لاستخدام Agents في التدفقات:
  1. المخرجات المهيكلة: استخدام نماذج Pydantic لتحديد تنسيق المخرجات المتوقع (MarketAnalysis) يضمن سلامة الأنواع والبيانات المهيكلة في جميع أنحاء التدفق.
  2. إدارة الحالة: تحافظ حالة التدفق (MarketResearchState) على السياق بين الخطوات وتخزّن كلًا من المدخلات والمخرجات.
  3. تكامل الأدوات: يمكن لـ Agents استخدام أدوات (مثل WebsiteSearchTool) لتعزيز قدراتهم.

إضافة فرق Crew إلى التدفقات

إنشاء تدفق مع فرق Crew متعددة في CrewAI أمر مباشر. يمكنك إنشاء مشروع CrewAI جديد يتضمن جميع الهيكلية اللازمة لإنشاء تدفق مع فرق Crew متعددة عن طريق تشغيل الأمر التالي:
سيولّد هذا الأمر مشروع CrewAI جديد مع هيكل المجلدات اللازم. يتضمن المشروع المولّد فريق Crew مُعد مسبقًا يُسمى poem_crew ويعمل بالفعل. يستخدم الـ embedded crew الابتدائي بنية Python/YAML الكلاسيكية؛ أما crews المستقلة الجديدة التي تُنشأ عبر crewai create crew فتستخدم بنية JSON-first.

هيكل المجلدات

بعد تشغيل أمر crewai create flow name_of_flow، سترى هيكل مجلدات مشابه للتالي:

بناء فرق Crew الخاصة بك

في مجلد crews، يمكنك تحديد فرق Crew متعددة. سيكون لكل فريق مجلده الخاص الذي يحتوي على ملفات الإعداد وملف تعريف الفريق. على سبيل المثال، يحتوي مجلد poem_crew على:
  • config/agents.yaml: يحدد الـ Agents للفريق.
  • config/tasks.yaml: يحدد المهام للفريق.
  • poem_crew.py: يحتوي على تعريف الفريق، بما في ذلك الـ Agents والمهام والفريق نفسه.
يمكنك نسخ ولصق وتعديل poem_crew لإنشاء crews كلاسيكية مضمّنة أخرى. للـ crews المضمّنة بنمط JSON-first، استخدم مجلدًا يحتوي على crew.jsonc و agents/*.jsonc:
ثم حمّلها من خطوة في Flow:

ربط فرق Crew في main.py

ملف main.py هو حيث تنشئ التدفق وتربط فرق Crew معًا. يمكنك تحديد التدفق باستخدام فئة Flow والمزخرفات @start و @listen لتحديد تدفق التنفيذ. إليك مثال على كيفية ربط poem_crew في ملف main.py:
Code
في هذا المثال، تحدد فئة PoemFlow تدفقًا يولّد عدد الجمل، ويستخدم PoemCrew لتوليد قصيدة، ثم يحفظ القصيدة في ملف. يتم بدء التدفق باستدعاء دالة kickoff(). سيتم توليد PoemFlowPlot بواسطة دالة plot(). Flow Visual image

تشغيل التدفق

(اختياري) قبل تشغيل التدفق، يمكنك تثبيت التبعيات بتشغيل:
بمجرد تثبيت جميع التبعيات، تحتاج إلى تفعيل البيئة الافتراضية بتشغيل:
بعد تفعيل البيئة الافتراضية، يمكنك تشغيل التدفق بتنفيذ أحد الأوامر التالية:
أو
سيُنفَّذ التدفق، ويجب أن ترى المخرجات في وحدة التحكم.

رسم التدفقات

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

ما هي الرسوم البيانية؟

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

كيفية إنشاء رسم بياني

توفر CrewAI طريقتين مريحتين لإنشاء رسوم بيانية لتدفقاتك:

الخيار 1: استخدام دالة plot()

إذا كنت تعمل مباشرة مع مثيل تدفق، يمكنك إنشاء رسم بياني باستدعاء دالة plot() على كائن التدفق. ستُنشئ هذه الدالة ملف HTML يحتوي على الرسم البياني التفاعلي لتدفقك.
Code
سيُنشئ هذا ملفًا باسم my_flow_plot.html في مجلدك الحالي. يمكنك فتح هذا الملف في متصفح ويب لعرض الرسم البياني التفاعلي.

الخيار 2: استخدام سطر الأوامر

إذا كنت تعمل ضمن مشروع CrewAI منظم، يمكنك إنشاء رسم بياني باستخدام سطر الأوامر. هذا مفيد بشكل خاص للمشاريع الأكبر حيث تريد تصوير إعداد التدفق بالكامل.
سيُنشئ هذا الأمر ملف HTML مع الرسم البياني لتدفقك، مشابهًا لدالة plot(). سيتم حفظ الملف في مجلد مشروعك، ويمكنك فتحه في متصفح ويب لاستكشاف التدفق.

فهم الرسم البياني

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

الخلاصة

رسم تدفقاتك هو ميزة قوية في CrewAI تعزز قدرتك على تصميم وإدارة سير عمل الذكاء الاصطناعي المعقدة. سواء اخترت استخدام دالة plot() أو سطر الأوامر، فإن إنشاء الرسوم البيانية سيوفر لك تمثيلًا بصريًا لسير عملك، مما يساعد في التطوير والعرض.

الخطوات التالية

إذا كنت مهتمًا باستكشاف أمثلة إضافية للتدفقات، لدينا مجموعة متنوعة من التوصيات في مستودع الأمثلة. إليك أربعة أمثلة تدفق محددة، كل منها يعرض حالات استخدام فريدة لمساعدتك في مطابقة نوع مشكلتك الحالية مع مثال محدد:
  1. تدفق الرد التلقائي على البريد الإلكتروني: يوضح هذا المثال حلقة لا نهائية حيث تعمل مهمة خلفية باستمرار لأتمتة ردود البريد الإلكتروني. إنها حالة استخدام رائعة للمهام التي تحتاج إلى التنفيذ بشكل متكرر دون تدخل يدوي. عرض المثال
  2. تدفق تقييم العملاء المحتملين: يعرض هذا التدفق إضافة تغذية راجعة بشرية والتعامل مع فروع شرطية مختلفة باستخدام الموجّه. إنه مثال ممتاز لكيفية دمج اتخاذ القرارات الديناميكية والرقابة البشرية في سير عملك. عرض المثال
  3. تدفق كتابة كتاب: يتفوق هذا المثال في ربط فرق Crew متعددة معًا، حيث تُستخدم مخرجات فريق واحد بواسطة فريق آخر. على وجه التحديد، يقوم فريق واحد بوضع مخطط لكتاب كامل، ويقوم فريق آخر بإنشاء فصول بناءً على المخطط. في النهاية، يتم ربط كل شيء لإنتاج كتاب كامل. هذا التدفق مثالي للعمليات المعقدة متعددة الخطوات التي تتطلب تنسيقًا بين مهام مختلفة. عرض المثال
  4. تدفق مساعد الاجتماعات: يوضح هذا التدفق كيفية بث حدث واحد لتشغيل إجراءات متابعة متعددة. على سبيل المثال، بعد اكتمال اجتماع، يمكن للتدفق تحديث لوحة Trello وإرسال رسالة Slack وحفظ النتائج. إنه مثال رائع للتعامل مع نتائج متعددة من حدث واحد، مما يجعله مثاليًا لإدارة المهام الشاملة وأنظمة الإشعارات. عرض المثال
من خلال استكشاف هذه الأمثلة، يمكنك الحصول على رؤى حول كيفية الاستفادة من تدفقات CrewAI لحالات استخدام متنوعة، من أتمتة المهام المتكررة إلى إدارة العمليات المعقدة متعددة الخطوات مع اتخاذ القرارات الديناميكية والتغذية الراجعة البشرية. أيضًا، شاهد فيديو YouTube الخاص بنا حول كيفية استخدام التدفقات في CrewAI أدناه!

تشغيل التدفقات

هناك طريقتان لتشغيل التدفق:

استخدام واجهة Flow API

يمكنك تشغيل تدفق برمجيًا عن طريق إنشاء مثيل من فئة التدفق واستدعاء دالة kickoff():

بث تنفيذ التدفق

للحصول على رؤية فورية لتنفيذ التدفق، يمكنك تفعيل البث لتلقي المخرجات فور توليدها:
تعرّف على المزيد حول البث في دليل بث تنفيذ التدفق.

الذاكرة في التدفقات

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

الدوال المدمجة

يتم إنشاء مثيل Memory() افتراضي تلقائيًا عند تهيئة التدفق. يمكنك أيضًا تمرير مثيل مخصص:

مثال: تدفق البحث والتحليل

نظرًا لأن الذاكرة تستمر عبر عمليات التشغيل (مدعومة بـ LanceDB على القرص)، فإن خطوة analyze ستستدعي النتائج من عمليات التنفيذ السابقة أيضًا — مما يتيح تدفقات تتعلم وتراكم المعرفة بمرور الوقت. انظر وثائق الذاكرة لمزيد من التفاصيل حول النطاقات والشرائح والتسجيل المركب وإعداد المُضمِّن والمزيد.

استخدام CLI

بدءًا من الإصدار 0.103.0، يمكنك تشغيل التدفقات باستخدام أمر crewai run:
يكتشف هذا الأمر تلقائيًا ما إذا كان مشروعك تدفقًا (بناءً على إعداد type = "flow" في pyproject.toml الخاص بك) ويشغّله وفقًا لذلك. هذه هي الطريقة الموصى بها لتشغيل التدفقات من سطر الأوامر. أمر crewai flow kickoff القديم deprecated. استخدم crewai run لكل من فرق Crew والتدفقات.