यह पायथन स्क्रिप्ट एक एआई-पावर्ड टास्क मैनेजमेंट सिस्टम का एक उदाहरण है। यह सिस्टम ओपेनएआई और वेक्टर डेटाबेस जैसे Chroma या Weaviate का उपयोग करता है ताकि कार्यों को बनाना, प्राथमिकता देना और क्रियान्वयन करना संभव हो सके। इस सिस्टम के पीछे की मुख्य विचारधारा यह है कि यह पिछले कार्यों के परिणाम और एक पूर्वनिर्धारित उद्देश्य के आधार पर कार्यों को बनाता है। फिर स्क्रिप्ट ओपेनएआई के प्राकृतिक भाषा प्रोसेसिंग (एनएलपी) क्षमताओं का उपयोग करता है ताकि उद्देश्य के आधार पर नए कार्य बनाए जा सकें, और Chroma / Weaviate का उपयोग करता है ताकि संदर्भ के लिए कार्य परिणाम संग्रहीत और पुनर्प्राप्त किए जा सकें। यह मूल टास्क-ड्रिवन ऑटोनोमस एजेंट (28 मार्च, 2023) का एक कम किए गए संस्करण है।
यह README निम्नलिखित विषयों पर चर्चा करेगा:
- स्क्रिप्ट कैसे काम करता है
- स्रिप्ट का उपयोग कैसे करें
- समर्थित मॉडल
- स्क्रिप्ट को निरंतर चलाने के बारे में चेतावनी
यह स्क्रिप्ट निम्नलिखित चरणों को करते हुए एक अनंत लूप को चलाकर काम करता है:
- कार्य सूची से पहला कार्य खींचें।
- कार्य को क्रियान्वयन एजेंट को भेजें, जो संदर्भ के आधार पर टास्क को पूरा करने के लिए ओपनएआई के एपीआई का उपयोग करता है।
- परिणाम को अमीर बनाकर Chroma/Weaviate में संग्रहीत करें।
- उद्देश्य और पिछले कार्य के परिणाम के आधार पर नए कार्य बनाएं और कार्य सूची की प्राथमिकता को दोबारा तैयार करें।
execution_agent()
फ़ंक्शन में ओपनएआई एपीआई का उपयोग किया जाता है। इसमें दो पैरामीटर होते हैं: उद्देश्य और कार्य। फिर यह ओपनएआई के एपीआई को एक प्रॉम्प्ट भेजता है, जो कार्य के परिणाम को लौटाता है। प्रॉम्प्ट में एक एआई सिस्टम के कार्य का वर्णन, उद्देश्य, और कार्य होता है। फिर परिणाम एक स्ट्रिंग के रूप में लौटाया जाता है।
task_creation_agent()
फ़ंक्शन में ओपनएआई का उपयोग उद्देश्य और पिछले कार्य के परिणाम के आधार पर नए कार्य बनाने के लिए किया जाता है। यह फ़ंक्शन चार पैरामीटर लेता है: उद्देश्य, पिछले कार्य के परिणाम, कार्य विवरण, और वर्तमान कार्य सूची। फिर यह ओपनएआई को एक प्रॉम्प्ट भेजता है, जो नए कार्यों की एक स्ट्रिंग की सूची लौटाता है। फ़ंक्शन फिर नए कार्यों को डिक्शनरी की एक सूची के रूप में लौटाता है, जहाँ प्रत्येक डिक्शनरी में कार्य का नाम होता है।
prioritization_agent()
फ़ंक्शन में OpenAI के API का उपयोग किया जाता है जिससे टास्क सूची को दोबारा प्राथमिकता दी जाती है। फ़ंक्शन एक पैरामीटर लेता है, वर्तमान कार्य का आईडी। यह OpenAI के API को एक प्रॉम्प्ट भेजता है, जो नंबरदार सूची के रूप में दोबारा प्राथमिकता दी गई टास्क सूची लौटाता है।
अंत में, स्क्रिप्ट Chroma/Weaviate का उपयोग करता है टास्क परिणामों को संदर्भ के लिए संग्रहीत और पुनः प्राप्त करने के लिए। स्क्रिप्ट टेबल नाम में निर्दिष्ट बचाव के आधार पर एक Chroma/Weaviate संग्रह बनाता है। Chroma/Weaviate फिर संग्रह में कार्य के परिणामों को, साथ ही कार्य के नाम और किसी अतिरिक्त मेटाडेटा के साथ संग्रहीत करने के लिए उपयोग किया जाता है।
स्क्रिप्ट का उपयोग करने के लिए, आपको निम्नलिखित चरणों का पालन करना होगा:
- रिपॉजिटरी क्लोन करें:
git clone https://github.com/yoheinakajima/babyagi.git
और cd कमांड का उपयोग करके क्लोन रिपॉजिटरी में जाएं। - आवश्यक पैकेजों को इंस्टॉल करें:
pip install -r requirements.txt
- .env.example फ़ाइल को .env में कॉपी करें:
cp .env.example .env
। यहाँ आप निम्नलिखित वेरिएबल को सेट करेंगे। - अपनी OpenAI API कुंजी को OPENAI_API_KEY और OPENAPI_API_MODEL वेरिएबल में सेट करें।
- टेबल नाम जहाँ कार्य परिणाम संग्रहित होंगे, उसे TABLE_NAME वेरिएबल में सेट करें।
- (वैकल्पिक) BABY_NAME वेरिएबल में BabyAGI इंस्टेंस का नाम सेट करें।
- (वैकल्पिक) OBJECTIVE वेरिएबल में कार्य प्रबंधन प्रणाली का उद्देश्य सेट करें।
- (वैकल्पिक) INITIAL_TASK वेरिएबल में प्रणाली का पहला कार्य सेट करें।
- स्क्रिप्ट को रन करें:
python babyagi.py
ऊपर दिए गए सभी वैकल्पिक मान भी कमांड लाइन पर निर्दिष्ट किए जा सकते हैं।
पूर्वापेक्षा के रूप में, आपको डॉकर और डॉकर-कम्पोज इंस्टॉल करने की आवश्यकता होगी। डॉकर डेस्कटॉप सबसे सरल विकल्प है https://www.docker.com/products/docker-desktop/
एक डॉकर कंटेनर के भीतर सिस्टम को चलाने के लिए, उपरोक्त चरणों के अनुसार अपनी .env फ़ाइल सेटअप करें और फिर निम्नलिखित को चलाएँ:
docker-compose up
यह स्क्रिप्ट सभी OpenAI मॉडलों के साथ काम करता है, यहां तक कि Llama और उसके विभिन्न रूपों के साथ भी Llama.cpp के माध्यम से। डिफ़ॉल्ट मॉडल gpt-3.5-turbo है। किसी भी अन्य मॉडल का उपयोग करने के लिए, LLM_MODEL के माध्यम से इसे निर्दिष्ट करें या कमांड लाइन का उपयोग करें।
Llama एकीकरण के लिए llama-cpp पैकेज की आवश्यकता होगी। आपको भी Llama मॉडल वेट्स की आवश्यकता होगी।
- किसी भी स्थिति में इस रेपो में, जिसमें मॉडल डाउनलोड के लिंक, जैसे IPFS, मैग्नेट लिंक या कोई भी दूसरा लिंक हो, उन्हें मुंहतोड़ रूप से हटा दिया जाएगा। इनका उपयोग करने वालों को तुरंत निष्कासित किया जाएगा।
एक बार जब आप उन्हें प्राप्त कर लेते हैं, तो LLAMA_MODEL_PATH में निर्दिष्ट मॉडल के पथ को सेट करें। सुविधा के लिए, आप models
को BabyAGI repo में जहां आपके पास Llama मॉडल वेट्स हैं, उस फ़ोल्डर से लिंक कर सकते हैं। फिर LLM_MODEL=llama
या -l
तर्क के साथ स्क्रिप्ट चल
यह स्क्रिप्ट एक कार्य प्रबंधन सिस्टम के रूप में निरंतर चलाने के लिए डिजाइन किया गया है। इसे निरंतर चलाने से उच्च API उपयोग हो सकता है, इसलिए कृपया इसका जिम्मेदार उपयोग करें। इसके अलावा, स्क्रिप्ट को ठीक से सेटअप करने के लिए ओपनएआई एपीआई की आवश्यकता होती है, इसलिए स्क्रिप्ट को चलाने से पहले ओपनएआई एपीआई को सेटअप करने की सुनिश्चित करें।
निश्चित रूप से, बेबीएजी अभी अपनी शुरुआती अवस्था में है और इस दिशा और उस तक पहुंचने के लिए आवश्यक कदम अभी तक निर्धारित नहीं हुए हैं। वर्तमान में, बेबीएजी के लिए एक महत्वपूर्ण डिजाइन लक्ष्य है कि यह सरल होना चाहिए ताकि इसे समझना और उस पर निर्माण करना आसान हो। इस सरलता को बनाए रखने के लिए, जब आप PR जमा करते हैं, तो कृपया निम्नलिखित दिशानिर्देशों का पालन करें:
- बड़े, विस्तृत रीफैक्टरिंग की जगह छोटे, मॉड्यूलर संशोधनों पर ध्यान केंद्रित करें।
- नई सुविधाओं को लाने के समय, आपको उस विशिष्ट उपयोग मामले का विस्तृत विवरण प्रदान करना चाहिए।
@yoheinakajima से एक नोट (5 अप्रैल, 2023):
मुझे पता है कि GitHub और ओपन सोर्स के बढ़ते हुए नंबर से मैंने अपने समय की उपलब्धता के अनुसार प्लान नहीं बनाया है - इसलिए आपकी सहनशीलता की कामना करता हूं। संबंधित दिशा में, मैं सरल रखने या विस्तार करने के बीच उलझा हुआ हूँ - वर्तमान में बेबी एजीआई कोर सरल रखने की ओर झुका हुआ हूँ, और इसे एक मंच के रूप में उपयोग करके इसे विस्तारित करने के विभिन्न दिशाओं का समर्थन और प्रचार करने के लिए (जैसे BabyAGIxLangchain एक दिशा हो सकती है)। मुझे लगता है कि विभिन्न मतभेदग्रस्त दृष्टिकोण हैं जो अन्वेषण के लायक हैं, और मुझे इसमें एक केंद्रीय स्थान का महत्व देखने में है जहां तुलना और चर्चा की जा सकती है। जल्द ही और अद्यतन आ रहे हैं।
मैं GitHub और ओपन सोर्स में नया हूँ, इसलिए कृपया मुझे इस प्रोजेक्ट को सही ढंग से प्रबंधित करना सीखने के लिए संयम रखें। मैं दिनभर VC फर्म चलाता हूँ, इसलिए अधिकतम समय मैं अपने बच्चों को सोने के बाद रात में PRs और इश्यूज की जाँच करूँगा - जो हर रात नहीं हो सकता है। मैं सहायता लाने की विचारधारा को खुली छोड़ता हूँ, जल्द ही इस खंड को अपडेट करूंगा (अपेक्षाएं, दृष्टियाँ आदि)। मैं लोगों से बातचीत कर रहा हूँ और सीख रहा हूँ - अपडेट के लिए धैर्य रखें!
BabyAGI को रिलीज होने के कुछ ही समय में, इसने कई प्रोजेक्ट्स को प्रेरित किया है। आप उन सभी प्रोजेक्ट्स को यहाँ देख सकते हैं।
बेबीएजीआई ट्विटर पर साझा किए गए मूल टास्क-ड्राइवन ऑटोनोमस एजेंट का एक संस्कार वाला संस्करण है। यह संस्करण 140 लाइनों तक डाउन है: 13 टिप्पणियाँ, 22 रिक्तियां, और 105 कोड। रेपो का नाम मूल ऑटोनोमस एजेंट के प्रति प्रतिक्रिया में उठा था - लेखक इस बात का अर्थ नहीं करना चाहता कि यह एजीआई है।
@yoheinakajima ने प्यार से बनाया है, जो एक वीसी है (अगर आप क्या बना रहे हैं, देखना चाहेंगे!)।