BabyAGI is an AI-powered task management system that uses OpenAI and Pinecone APIs to create, prioritize, and execute tasks.
این اسکریپت پایتون یک نمونه سیستم مدیریت وظایف توانمند هوش مصنوعی است. این سیستم با استفاده از API های OpenAI و Pinecone، وظایف را ایجاد، اولویت بندی و اجرا می کند. ایده اصلی پشت این سیستم این است که وظایف بر اساس نتیجه وظایف قبلی و هدف پیش تعریف شده ایجاد می شوند. سپس این اسکریپت از قابلیت های پردازش زبان طبیعی (NLP) OpenAI برای ایجاد وظایف جدید براساس هدف استفاده می کند، و از Pinecone برای ذخیره و بازیابی نتایج وظایف برای کانتکست استفاده می کند. این یک نسخه کوچکتر از Task-Driven Autonomous Agent (28 مارس 2023) است.
این کسریپت اینگونه کار میکند که در یک لوپ به صورت متدادم:
تابع execution_agent() جایی است که از API OpenAI استفاده میشود. این تابع دو پارامتر دریافت میکند: هدف و وظیفه. سپس یک پرامپت (prompt) به API OpenAI ارسال میکند که نتیجه وظیفه را برمیگرداند. پرامپت شامل توصیفی از وظیفه سیستم هوش مصنوعی، هدف و وظیفه خود است. نتیجه به عنوان یک رشته (string) برگشت داده میشود. </br> تابع task_creation_agent() جایی است که از API OpenAI برای ایجاد وظایف جدید براساس هدف و نتیجه وظیفه قبلی استفاده میشود. این تابع چهار پارامتر دریافت میکند: هدف، نتیجه وظیفه قبلی، شرح وظیفه و لیست کنونی وظایف. سپس یک پرامپت (prompt) به API OpenAI ارسال میشود که لیستی از وظایف جدید را به صورت رشتهها برمیگرداند. سپس تابع وظایف جدید را به عنوان یک لیست دیکشنری برمیگرداند، که هر دیکشنری شامل نام وظیفه است. </br> تابع prioritization_agent() جایی است که از API OpenAI برای تنظیم مجدد اولویت لیست وظایف استفاده میشود. این تابع یک پارامتر، یعنی شناسه وظیفه جاری را دریافت میکند. سپس یک پرامپت (prompt) به API OpenAI ارسال میشود که لیست وظایف تنظیم شده مجدداً به صورت لیست شمارهدار برمیگرداند.
در نهایت، این اسکریپت از Pinecone برای ذخیره و بازیابی نتایج وظایف برای کانتکست استفاده میکند. اسکریپت یک فهرست Pinecone براساس نام جدول مشخص شده در متغیر YOUR_TABLE_NAME ایجاد میکند. Pinecone سپس برای ذخیره نتایج وظایف در این فهرست، به همراه نام وظیفه و هر فضای متادیتا اضافی استفاده میشود.
برای استفاده از این اسکریپت، باید مراحل زیر را دنبال کنید:
git clone https://github.com/yoheinakajima/babyagi.git
cd babyagi
pip install -r requirements.txt
cp .env.example .env
OPENAI_API_KEY=
OPENAPI_API_MODEL=
PINECONE_API_KEY=
PINECONE_ENVIRONMENT=
TABLE_NAME=
BABY_NAME=
OBJECTIVE=
INITIAL_TASK=
python babyagi.py
در این روش، نیاز به نصب docker و docker-compose دارید. سادهترین راه برای نصب Docker Desktop است https://www.docker.com/products/docker-desktop/
برای اجرای سیستم داخل یک کانتینر Docker، ابتدا فایل .env را مطابق با مراحل بالا تنظیم کنید، سپس دستور زیر را اجرا کنید:
docker-compose up
این اسکریپت با تمام مدلهای OpenAI و همچنین Llama از طریق Llama.cpp کار میکند. مدل پیشفرض gpt-3.5-turbo است. برای استفاده از مدل دیگر، آن را از طریق OPENAI_API_MODEL مشخص کنید یا از خط فرمان استفاده کنید.
آخرین نسخه Llama.cpp را دانلود کنید و دستورالعملهای نصب آن را دنبال کنید. همچنین نیاز به وزن مدل Llama دارید.
پس از آن، پوشه llama/main
را به llama.cpp/main
و models
را به پوشهای که وزن مدل Llama در آن قرار دارد متصل کنید. سپس اسکریپت را با استفاده از OPENAI_API_MODEL=llama
یا -l
اجرا کنید.
این اسکریپت برای اجرای پیوسته به عنوان یک سیستم مدیریت وظایف طراحی شده است. اجرای پیوسته این اسکریپت میتواند منجر به استفاده بالای API شود، لطفاً با مسئولیت کاربردی از
بدیهی است که BabyAGI هنوز در دوران نوزادی خود است و به همین دلیل هنوز داریم جهت آن و گامهای لازم برای رسیدن به آن را تعیین میکنیم. هدف طراحی برای BabyAGI در حال حاضر این است که ساده باشد تا به راحتی قابل فهم و گسترش باشد. برای حفظ این سادگی، لطفاً در هنگام ارسال PRs به دستورالعملهای زیر عمل کنید:
یک نکته از طرف @yoheinakajima (۵ آوریل ۲۰۲۳):
من میدانم که تعداد PRها در حال افزایش است و از صبر شما قدردانی میکنم - زیرا من همزمان با تازه وارد بودن به GitHub/OpenSource و برنامه ریزی نکردن وقت خود در این هفته مواجه هستم. در مورد جهت، من در دو دسته نگه داشتن آن ساده یا گسترده تر بودم - در حال حاضر به سمت نگه داشتن یک Baby AGI هستم و از آن به عنوان یک پلتفرم برای پشتیبانی و ترویج رویکردهای مختلف گسترش استفاده میکنم (به عنوان مثال BabyAGIxLangchain به عنوان یک جهت). من معتقدم که رویکردهای نظری مختلفی وجود دارند که ارزش اکتشاف آنها را دارند، و من ارزش دارم در دسترس داشتن یک مکان مرکزی برای مقایسه و بحث بین این رویکردها را میبینم. ب