BabyAGI is an AI-powered task management system that uses OpenAI and Pinecone APIs to create, prioritize, and execute tasks.
هذا البرنامج يعتبر مثال تطبيقي لنظام إدارة مهام يعمل بواسطة الذكاء الاصطناعي. يستخدم النظام OpenAI و Chroma DB لإنشاء وترتيب المهام حسب الأولوية و ثم تنفيذها. الفكرة الرئيسية هي إنشاء مهام Tasks جديدة بناءً على هدف محدد مسبقاً بمساعدة الذكاء الاصطناعي -تحديداً، قدرات المعالجة اللغوية التي تقدمها النماذج التوليدية المدربة مسبقاً GPTs- من OpanAI وتخزين هذه المهام و نتائجها في قاعدة بيانات Chroma لاسترجاعها لاحقاً حسب السياق. هذه نسخة مختصرة من المقترح الأصلي Task-Driven Autonomous Agent (Mar 28, 2023).
هذا الملف (README) سوف يغطي:
يعمل البرنامج عبر تشغيل دورة لا نهائية loop تقوم بالخطوات التالية:
يتم استخدام “وكيل Agent” للتعبير عن الوظيفة Function التي يقوم بها البرنامج بناءً على الهدف.
وظيفة تنفيذ مهمة execution_agent()
، تأخذ (هدف محدد، مهمة محددة): هنا يتم إرسال Prompt تحتوي على وصف وظيفة التنفيذ كتعليمات، والهدف الذي تم تحديده والمهمة التي تم إنشائها كسياق لطلب توليدي إلى OpenAI API حيث يقوم بتوليد نتيجة تنفيذ المهمة نصياً.
</br>
وظيفة إنشاء مهمة task_creation_agent()
، تأخذ (هدف محدد، نتيجة المهمة السابقة، وصف المهمة، قائمة المهام الحالية): هنا يتم إرسال Prompt تحتوي على وصف وظيفة إنشاء المهام كتعليمات، وباقي المتغيرات كسياق لطلب توليدي إلى OpenAI API حيث يقوم بتوليد قائمة مهام على شكل نص.
</br>
وظيفة ترتيب المهام حسب الأولية prioritization_agent()
، تأخذ (معرّف المهمة الحالية): هنا يتم إرسال Prompt تحتوي على وصف وظيفة ترتيب المهام كتعليمات، وقائمة المهام و المهمة الحالية كسياق لطلب توليدي إلى Open AI API حيث يقوم بتوليد قائمة مهام جديدة -معاد ترتيبها- على شكل نص.
</br>
أخيراً، يستخدم التطبيق قاعدة بيانات Chroma لتخزين قوائم المهام، ونتائج المهام المكتملة وبيانات إضافية Metadata لاستخدامها لاحقاً كسياق. التخزين يتم بمجموعة (جدول) يتم إنشاؤه بناءً على الاسم الذي تم تحديده عبر المتغير TABLE_NAME
لاستخدام البرنامج، ستحتاج إلى إتباع هذه الخطوات:
git clone https://github.com/yoheinakajima/babyagi.git
وانتقل إلى المجلد الجديد باستخدام الأمر cd
.env.example
إلى .env
حيث يجب تعديل عدة متغيرات:
والنموذج عبر المتغير
OPENAPI_API_MODEL`python babyagi.py
كل القيم الاختيارية يمكن ايضاً تمريرها عبر أمر تشغيل البرنامج.ستحتاج إلى تثبيت Docker و Docker Compose. Docker Desktop هو الخيار الأسهل https://www.docker.com/products/docker-desktop
لتشغيل النظام داخل حاوية Docker ، قم بتعيين ملف .env الخاص بك وفقًا لخطوات أعلاه ثم قم بتشغيل الأمر التالي:
docker-compose up
هذا البرنامج يدعم جميع النماذج المتوفرة عبر OpenAI API وايضاً نماذج Llama عبر Llama.cpp. النموذج الافتراضي هو gpt-3.5-turbo. لتغيير النموذج، قم بتغيير قيمة المتغير LLM_MODEL
او عبر واجهة الأوامر.
لاستخدام نموذج Llama، ستحتاج إلى تثبيت الحزمة llama-cpp. ستحتاج أيضاً إلى أوزان النموذج.
اذا كنت تملك المتطلبات لتشغيل Llama.cpp قم بتغيير قيمة المتغير LLAMA_MODEL_PATH
لموقع النموذج المراد استخدامه. للسهولة، يمكنك ربط مجلد models
في مستودع BabyAGI بالمجلد الذي يحتوي على أوزان النموذج. ثم قم بتشغيل البرنامج مع تحديد قيمة المتغير LLM_MODEL=llama
أو عبر متغير -l
في واجهة الأوامر.
هذا البرنامج مصمم ليعمل بشكل مستمر كجزء من نظام إدارة المهام. يمكن أن يؤدي تشغيل هذا البرنامج بشكل مستمر إلى استهلاك عالي من واجهة برمجة التطبيقات (API) من OpenAI، لذا يرجى استخدامه بحذر. بالإضافة إلى ذلك، يتطلب البرنامج أن يتم إعداد واجهات برمجة التطبيقات APIs لكلٍ من OpenAI و Chroma بشكل صحيح، لذا يرجى التأكد من الإعدادات قبل تشغيل البرنامج.
لا يوجد شك في أن BabyAGI لا يزال في مرحلة الطفولة وبالتالي نحن لا نزال نحدد اتجاهه والخطوات اللازمة للوصول إليه. حاليًا، الهدف التصميمي الرئيسي لـ BabyAGI هو أن يكون بسيطًا بحيث يكون من السهل فهمه والبناء عليه. للحفاظ على هذه البساطة، نطلب بلطف منك الالتزام بالإرشادات التالية عند تقديم الـ PRs:
ملاحظة من @yoheinakajima (5 أبريل 2023):
أنا أعرف أن هناك عدد كبير من الـPRs، وأقدر صبركم -كما أنني جديد في البرمجيات مفتوحة المصدر وGitHub، ولم أقم بتخطيط وقت توفري بشكل مناسب هذا الأسبوع. إعادة توجيه: كنت مشتتا بين البساطة والتوسع- أنا أميل حاليًا إلى الحفاظ على BabyAGI الأساسي ببساطة، و استخدامه كمنصة لدعم وتعزيز مختلف الطرق للتوسع في هذا الصدد (على سبيل المثال BabyAGIxLangchain كاتجاه واحد) اعتقد أن هناك عدة طرق مثيرة التي تستحق الاستكشاف، وأرى قيمة في وجود مكان مركزي للمقارنة والنقاش. المزيد من التحديثات قادمة قريبًا.
أنا جديد في GitHub والبرمجيات مفتوحة المصدر، لذلك يرجى التحلي بالصبر أثناء تعلمي لإدارة هذا المشروع بشكل صحيح. أنا أدير شركة استثمار مالي VC بالنهار، لذلك سأقوم بمراجعة طلبات المساهمة والمشاكل في الليل بعد أن أقوم بوضع أولادي في السرير - مما قد لا يكون كل ليلة. مفتوح لفكرة دعم إضافي، وسأكون تحديث هذا القسم قريبًا (التوقعات، الأفكار، الخ). أقوم بالتحدث إلى الكثير من الناس والتعلم - انتظروا التحديثات!
منذ صدوره، أثار BabyAGI اهتماما كبيرًا. يمكنك مشاهدة جميع المشاريع المستوحاة من BabyAGI هنا.
BabyAGI هو برنامج مبسط من الفكرة الرئيسية التي تم تقديمها في Task-Driven Autonomous Agent (28 مارس 2023). هذه النسخة البسيطة تتكون من 140 سطرًا: 13 تعليقات، 22 خطًا فارغًا = 105 سطرًا من التعليمات البرمجية.
الاسم تم اقتراحه من قبل الناس ضمن الردود على التغريدة الأصلية، والمؤلف لا يدّعي ان هذا ذكاء عام اصطناعي.
صُنع بحب من قبل @yoheinakajima، أعمل كمستثمر VC و سأحب سماع ما تقوم ببناؤه!