Spaces:
Running
on
Zero
Running
on
Zero
<h1 align="center"> | |
babyagi | |
</h1> | |
# Задача | |
Этот Python-скрипт является примером системы управления задачами на основе искусственного интеллекта. Система использует API OpenAI и Pinecone для создания, определения приоритетов и выполнения задач. Основная идея этой системы заключается в том, что она создает задачи на основе результатов предыдущих задач и заранее определенной цели. Затем скрипт использует возможности обработки естественного языка (NLP) OpenAI для создания новых задач на основе цели, а Pinecone - для хранения и извлечения результатов задач в контексте. Это урезанная версия оригинального [Task-Driven Autonomous Agent](https://twitter.com/yoheinakajima/status/1640934493489070080?s=20) (Mar 28, 2023). | |
В этом README будет описано следующее: | |
* [Как работает скрипт](#как-это-работает) | |
* [Как использовать скрипт](#как-этим-пользоваться) | |
* [Поддерживаемые Модели](#поддерживаемые-модели) | |
* [Предупреждение о непрерывном запуске скрипта](#предупреждение-о-запуске-скрипта) | |
# Как это работает<a name="как-это-работает"></a> | |
Скрипт работает путем запуска бесконечного цикла, который выполняет следующие действия: | |
1. Вытаскивает первую задачу из списка задач. | |
2. Отправляет задачу агенту выполнения, который использует API OpenAI для выполнения задачи на основе контекста. | |
3. Обогащает результат и сохраняет его в Pinecone. | |
4. Создает новые задачи и изменяет приоритеты в списке задач на основе цели и результата предыдущей задачи. | |
Функция execution_agent() является тем местом, где используется API OpenAI. Она принимает два параметра: цель и задачу. Затем она посылает подсказку API OpenAI, который возвращает результат выполнения задачи. Подсказка состоит из описания задачи системы искусственного интеллекта, цели и самой задачи. Результат возвращается в виде строки. | |
Функция task_creation_agent() - это функция, в которой API OpenAI используется для создания новых задач на основе цели и результата предыдущей задачи. Функция принимает четыре параметра: цель, результат предыдущей задачи, описание задачи и текущий список задач. Затем она отправляет запрос в API OpenAI, который возвращает список новых задач в виде строк. Затем функция возвращает новые задачи в виде списка словарей, где каждый словарь содержит название задачи. | |
Функция prioritization_agent() - это функция, в которой API OpenAI используется для изменения приоритетов списка задач. Функция принимает один параметр - идентификатор текущей задачи. Она отправляет запрос в API OpenAI, который возвращает список задач с измененными приоритетами в виде нумерованного списка. | |
Наконец, скрипт использует Pinecone для хранения и извлечения результатов задач в контексте. Скрипт создает индекс Pinecone на основе имени таблицы, указанной в переменной YOUR_TABLE_NAME. Затем Pinecone используется для хранения результатов задачи в индексе, вместе с именем задачи и любыми дополнительными метаданными. | |
# Как этим пользоваться<a name="как-этим-пользоваться"></a> | |
Чтобы воспользоваться скриптом, необходимо выполнить следующие шаги: | |
1. Клонируйте репозиторий с помощью `git clone https://github.com/yoheinakajima/babyagi.git` и `cd` в клонированный репозиторий. | |
2. Установите необходимые пакеты: `pip install -r requirements.txt`. | |
3. Скопируйте файл .env.example в .env: `cp .env.example .env`. Здесь вы установите следующие переменные. | |
4. Задайте ключи API OpenAI и Pinecone в переменных OPENAI_API_KEY, OPENAPI_API_MODEL и PINECONE_API_KEY. | |
5. Установите окружение Pinecone в переменной PINECONE_ENVIRONMENT. | |
6. Задайте имя таблицы, в которой будут храниться результаты задачи, в переменной TABLE_NAME. | |
7. (Необязательно) Задайте цель системы управления задачами в переменной OBJECTIVE. | |
8. (Необязательно) Задайте первую задачу системы в переменной INITIAL_TASK. | |
9. Запустите скрипт. | |
Все необязательные значения, указанные выше, могут быть также заданы в командной строке. | |
# Поддерживаемые Модели<a name="поддерживаемые-модели"></a> | |
Этот скрипт работает со всеми моделями OpenAI, а также с Llama через Llama.cpp. Модель по умолчанию - **gpt-3.5-turbo**. Чтобы использовать другую модель, укажите ее через OPENAI_API_MODEL или используйте командную строку. | |
## Llama | |
Скачайте последнюю версию [Llama.cpp](https://github.com/ggerganov/llama.cpp) и следуйте инструкциям для ее создания. Вам также понадобятся модельные грузы (model weights) Llama. | |
- **Ни при каких обстоятельствах не делитесь IPFS, magnet-ссылками или любыми другими ссылками на загрузку моделей в этом репозитории, в том числе в вопросах, обсуждениях или запросах. Они будут немедленно удалены.** | |
После этого соедините `llama/main` с llama.cpp/main и `models` с папкой, где у вас лежат веса моделей Llama. Затем запустите скрипт с аргументом `OPENAI_API_MODEL=llama` или `-l`. | |
# Предупреждение<a name="предупреждение-о-запуске-скрипта"></a> | |
Этот скрипт предназначен для непрерывного выполнения в рамках системы управления задачами. Постоянный запуск этого скрипта может привести к высокому использованию API поэтому, пожалуйста, используйте его ответственно. Кроме того, скрипт требует правильной настройки API OpenAI и Pinecone, поэтому убедитесь, что вы настроили API перед запуском скрипта. | |
# Вклад в развитие проекта | |
BabyAGI все еще находится в зачаточном состоянии, поэтому мы определяем его направление и шаги развития. В настоящее время основная цель дизайна BabyAGI - быть *простым*, чтобы его было легко понять и развивать. Чтобы сохранить эту простоту, мы просим вас придерживаться следующих правил при подаче PR: | |
* Сосредоточьтесь на небольших модульных модификациях, а не на обширном рефакторинге. | |
* При введении новых функций предоставляйте подробное описание конкретного случая использования, который вы рассматриваете. | |
Заметка от @yoheinakajima (Apr 5th, 2023): | |
> Я знаю, что количество PR растет, ценю ваше терпение - поскольку я новичок на GitHub/OpenSource и не планировал свое время на этой неделе. Что касается направления, я размышлял о сохранении простоты и расширении - сейчас я склоняюсь к сохранению простоты ядра Baby AGI и использованию его в качестве платформы для поддержки и продвижения различных подходов к его расширению (например, BabyAGIxLangchain как одно из направлений). Я считаю, что существуют различные подходы, которые стоит изучить, и я вижу ценность в наличии центрального места для сравнения и обсуждения. Больше обновлений будет в ближайшее время. | |
Я новичок в GitHub и Open Source поэтому, пожалуйста, будьте терпеливы, пока я учусь правильно управлять этим проектом. Днем я работаю в венчурной фирме, так что обычно я буду проверять PR и проблемы по ночам, после того как уложу своих детей - что может происходить не каждый вечер. Открыт для идеи привлечения поддержки, скоро обновлю этот раздел (ожидания, видение проекта и т.д.). Общаюсь со многими людьми и учусь - следите за обновлениями! | |
# Предистория | |
BabyAGI - это сокращенная версия оригинального [Task-Driven Autonomous Agent](https://twitter.com/yoheinakajima/status/1640934493489070080?s=20) (Mar 28, 2023), опубликованного в Twitter. Эта версия сократилась до 140 строк: 13 комментариев, 22 пробела и 105 кода. Название репозитория появилось в реакции на оригинальный автономный агент - автор не хочет сказать, что это AGI. | |
Сделано с любовью [@yoheinakajima](https://twitter.com/yoheinakajima), который, как оказалось, является VC (хотел бы посмотреть, что вы создаете!). |