Spaces:
Running
on
Zero
Running
on
Zero
File size: 10,367 Bytes
14dc68f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# További fordítások:
[<img title="Français" alt="Français" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/fr.svg" width="22">](./README-fr.md)
[<img title="Portuguese" alt="Portuguese" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/br.svg" width="22">](./README-pt-br.md)
[<img title="Romanian" alt="Romanian" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/ro.svg" width="22">](./README-ro.md)
[<img title="Russian" alt="Russian" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/ru.svg" width="22">](./README-ru.md)
[<img title="Slovenian" alt="Slovenian" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/si.svg" width="22">](./README-si.md)
[<img title="Spanish" alt="Spanish" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/es.svg" width="22">](./README-es.md)
[<img title="Turkish" alt="Turkish" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/tr.svg" width="22">](./README-tr.md)
[<img title="Ukrainian" alt="Ukrainian" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/ua.svg" width="22">](./README-ua.md)
[<img title="简体中文" alt="Simplified Chinese" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/cn.svg" width="22">](./README-cn.md)
[<img title="繁體中文 (Traditional Chinese)" alt="繁體中文 (Traditional Chinese)" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/tw.svg" width="22">](./README-zh-tw.md)
[<img title="日本語" alt="日本語" src="https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/jp.svg" width="22">](./README-ja.md)
# Célkitűzés
Ez a Python szkript egy AI-alapú feladatkezelő rendszer példája. A rendszer az OpenAI és a Pinecone API-kat használja feladatok létrehozásához, prioritizálásához és végrehajtásához. A rendszer fő ötlete az, hogy a korábbi feladatok eredményeire és egy előre meghatározott célokra alapozva hozza létre az új feladatokat. A szkript az OpenAI természetes nyelvfeldolgozási (NLP) képességeit használja feladatok létrehozásához, és a Pinecone-t tárolja és visszakeresi a feladatok eredményeit a kontextus miatt. Ez egy lecsupaszított változata az eredeti [Task-Driven Autonomous Agent](https://twitter.com/yoheinakajima/status/1640934493489070080?s=20) (2023. március 28.) programnak.
Ez az OLVASSEL a következőket foglalja magába:
- [Hogyan működik?](#how-it-works)
- [Hogyan használható?](#how-to-use)
- [Támogatott modellek](#supported-models)
- [Figyelmeztetés a folyamatos futtatásra vonatkozóan](#continous-script-warning)
# Hogyan működik<a name="how-it-works"></a>
A szkript egy végtelen ciklus futtatásával működik, amely a következő lépéseket hajtja végre:
1. Lekéri az első feladatot a feladatlistából.
2. Elküldi a feladatot a végrehajtó ügynöknek, amely az OpenAI API-ját használja a feladat teljesítéséhez a kontextus alapján.
3. Gazdagítja az eredményt, majd tárolja a Pinecone-ban.
4. Új feladatokat hoz létre és prioritást állít be a feladatlista alapján az objektív és az előző feladat eredménye szerint.
</br>
A "execution_agent()" funkcióban használjuk az OpenAI API-t ami két paramétert adunk meg: az objektumot és a feladatot. Ezután küld egy lekérdezést az OpenAI API-jához, ami visszaadja az utasítás eredményét. Az lekérdezésre kerülő utasítás tartalmazza az AI rendszer feladatának leírását, az objektumot és magát a feladatot. A választ egy String formátumban kapjuk vissza.
</br>
A "task_creation_agent()" funkcióban az OpenAI API-ját használjuk új lekérdezések és az azokhoz tartozó utasítások létrehozásához az objektum és az előző feladat eredménye alapján. A funkció négy paramétert vár: az objektumot, az előző feladat eredményét, a feladat leírását és a jelenlegi feladatlistát. Ezután küld egy lekérdezést az újonnan létrehozott utasítással az OpenAI API-jához, ami válaszként egy új feladatokból álló listával válaszol szintén String formátumban. A függvény ezután az új feladatokat szótárlistaként adja vissza, ahol minden szótár tartalmazza a feladat nevét.
</br>
A "prioritization_agent()" funkcióban az OpenAI API-ját használjuk a feladatlista prioritizálásához. A funkció egy paramétert vár, ami az aktuális feladat azonosítója. Küld egy lekérdezést az OpenAI API-jához az utasítással, ami válaszként a prioritizált feladatlistát adja vissza számozva.
Végül a szkript használja a Pinecone-t a feladat eredményeinek tárolásához és lekérdezéséhez a kontextusban. A script egy Pinecone indexet hoz létre a YOUR_TABLE_NAME változóban a megadott tábla alapján. A Pinecone ezután a feladat eredményeinek az indexben való tárolására szolgál, a feladat nevével és a további metaadatokkal együtt.
# Hogyan használható?<a name="how-to-use"></a>
A szkript használatához kövesse a következő lépéseket:
1. Klónozza a tárat a `git clone https://github.com/yoheinakajima/babyagi.git` majd a `cd` parancs segítségével lépjen a klónozott tároló mappájába.
2. Telepítse a szükséges csomagokat: `pip install -r requirements.txt`
3. Másolja az .env.example fájlt a .env fájlba: `cp .env.example .env`. Itt állíthatja be a következőkben megadott változókat.
4. Állítsa be az OpenAI és Pinecone API-kulcsokat az OPENAI_API_KEY, OPENAPI_API_MODEL és PINECONE_API_KEY változókban.
5. Állítsa be a Pinecone környezetet a PINECONE_ENVIRONMENT változóban.
6. Adja meg a TABLE_NAME változóban annak a táblának a nevét, ahol a feladat eredményeit tárolni fogja.
7. (Opcionális) Állítsa be a feladatkezelő rendszer célját az OBJEKTÍV változóban.
8. (Opcionális) Állítsa be a rendszer első feladatát az INITIAL_TASK változóban.
9. Futtassa a szkriptet.
Az összes fenti opcionális érték a parancssorban is megadható.
# Futtatás Docker konténeren
Előfeltételként telepítenie kell a `docker`-t és a `docker-compose`-t, ha még nem rendelkezik ezekkel. A Docker asztali verziója a legegyszerűbb lehetőség ezeknek a telepítéséhez https://www.docker.com/products/docker-desktop/
A rendszer docker-tárolón belüli futtatásához állítsa be az `.env` fájlt a fenti lépések szerint, majd futtassa a következőket:
```
docker-compose up
```
# Támogatott modellek<a name="supported-models"></a>
Ez a szkript minden OpenAI modellel működik, valamint a Llama.cpp-n keresztül a Llamával is. Az alapértelmezett modell a **gpt-3.5-turbo**. Másik modell használatához adja meg az OPENAI_API_MODEL segítségével, vagy használja a parancssort.
## Llama
Töltse le a [Llama.cpp](https://github.com/ggerganov/llama.cpp) legújabb verzióját, és kövesse az utasításokat az elkészítéséhez. Szükséged lesz a Llama modellsúlyokra is.
- **Semmilyen körülmények között ne ossza meg az IPFS-t, a mágneses hivatkozásokat vagy a modellletöltésekhez vezető más hivatkozásokat sehol ebben a tárhelyben, beleértve a problémákat, a vitákat vagy a lekérési kéréseket mert azok azonnal törlődnek.**
Ezután kapcsolja össze a `llama/main`-t a llama.cpp/main-hez, a `models`-t pedig ahhoz a mappához, ahol a Llama-modell súlyai vannak. Ezután futtassa a szkriptet `OPENAI_API_MODEL=llama` vagy `-l` argumentummal.
# Figyelmeztetés<a name="continous-script-warning"></a>
Ezt a szkriptet úgy tervezték, hogy a feladatkezelő rendszer részeként folyamatosan futhasson. A szkript folyamatos futtatása magas API-használatot eredményezhet, ezért kérjük, használja felelősségteljesen! Ezenkívül a szkript megköveteli az OpenAI és Pinecone API-k megfelelő beállítását, ezért a szkript futtatása előtt győződjön meg arról, hogy megfelelően beállította a szükséges API-kra vonatkozó beállításokat.
# Hozzájárulás
Mondanunk sem kell, hogy a BabyAGI még gyerekcipőben jár, ezért még mindig meg kell határozzuk a szkript irányát és a lépéseit. Jelenleg a BabyAGI legfontosabb tervezési célja, hogy _egyszerű_, _könnyen érthető_ és _építhető_ legyen. Az egyszerűség megőrzése érdekében kérjük, hogy a PR-ok benyújtásakor tartsa be az alábbi irányelveket:
- A kiterjedt átalakítás helyett a kis, moduláris módosításokra összpontosítson.
- Új funkciók bevezetésekor részletes leírást adjon az Ön által kezelt konkrét használati esetről.
Egy megjegyzés @yoheinakajima-tól (2023. április 5.):
> I know there are a growing number of PRs, appreciate your patience - as I am both new to GitHub/OpenSource, and did not plan my time availability accordingly this week. Re:direction, I've been torn on keeping it simple vs expanding - currently leaning towards keeping a core Baby AGI simple, and using this as a platform to support and promote different approaches to expanding this (eg. BabyAGIxLangchain as one direction). I believe there are various opinionated approaches that are worth exploring, and I see value in having a central place to compare and discuss. More updates coming shortly.
I am new to GitHub and open source, so please be patient as I learn to manage this project properly. I run a VC firm by day, so I will generally be checking PRs and issues at night after I get my kids down - which may not be every night. Open to the idea of bringing in support, will be updating this section soon (expectations, visions, etc). Talking to lots of people and learning - hang tight for updates!
# Inspirált projektek
A megjelenés óta eltelt rövid idő alatt a BabyAGI számos projektet inspirált. Mindegyiket megtekintheti [itt](docs/inspired-projects.md).
# Háttértörténet
A BabyAGI a Twitteren megosztott eredeti [Task-Driven Autonomous Agent](https://twitter.com/yoheinakajima/status/1640934493489070080?s=20) kicsinyített változata (2023. március 28.). Ez a verzió 140 soros: 13 megjegyzés, 22 üres és 105 kód. A tároló neve az eredeti autonóm ügynökre adott reakcióban merült fel – a szerző nem azt akarja sugallni, hogy ez az AGI!
Szeretettel készítette [@yoheinakajima](https://twitter.com/yoheinakajima), aki nagyon szívesen látná, mit építesz!
|