Spaces:
Running
on
Zero
babyagi
Задача
Этот Python-скрипт является примером системы управления задачами на основе искусственного интеллекта. Система использует API OpenAI и Pinecone для создания, определения приоритетов и выполнения задач. Основная идея этой системы заключается в том, что она создает задачи на основе результатов предыдущих задач и заранее определенной цели. Затем скрипт использует возможности обработки естественного языка (NLP) OpenAI для создания новых задач на основе цели, а Pinecone - для хранения и извлечения результатов задач в контексте. Это урезанная версия оригинального Task-Driven Autonomous Agent (Mar 28, 2023).
В этом README будет описано следующее:
Как это работает
Скрипт работает путем запуска бесконечного цикла, который выполняет следующие действия:
- Вытаскивает первую задачу из списка задач.
- Отправляет задачу агенту выполнения, который использует API OpenAI для выполнения задачи на основе контекста.
- Обогащает результат и сохраняет его в Pinecone.
- Создает новые задачи и изменяет приоритеты в списке задач на основе цели и результата предыдущей задачи.
Функция 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 используется для хранения результатов задачи в индексе, вместе с именем задачи и любыми дополнительными метаданными.
Как этим пользоваться
Чтобы воспользоваться скриптом, необходимо выполнить следующие шаги:
- Клонируйте репозиторий с помощью
git clone https://github.com/yoheinakajima/babyagi.git
иcd
в клонированный репозиторий. - Установите необходимые пакеты:
pip install -r requirements.txt
. - Скопируйте файл .env.example в .env:
cp .env.example .env
. Здесь вы установите следующие переменные. - Задайте ключи API OpenAI и Pinecone в переменных OPENAI_API_KEY, OPENAPI_API_MODEL и PINECONE_API_KEY.
- Установите окружение Pinecone в переменной PINECONE_ENVIRONMENT.
- Задайте имя таблицы, в которой будут храниться результаты задачи, в переменной TABLE_NAME.
- (Необязательно) Задайте цель системы управления задачами в переменной OBJECTIVE.
- (Необязательно) Задайте первую задачу системы в переменной INITIAL_TASK.
- Запустите скрипт.
Все необязательные значения, указанные выше, могут быть также заданы в командной строке.
Поддерживаемые Модели
Этот скрипт работает со всеми моделями OpenAI, а также с Llama через Llama.cpp. Модель по умолчанию - gpt-3.5-turbo. Чтобы использовать другую модель, укажите ее через OPENAI_API_MODEL или используйте командную строку.
Llama
Скачайте последнюю версию Llama.cpp и следуйте инструкциям для ее создания. Вам также понадобятся модельные грузы (model weights) Llama.
- Ни при каких обстоятельствах не делитесь IPFS, magnet-ссылками или любыми другими ссылками на загрузку моделей в этом репозитории, в том числе в вопросах, обсуждениях или запросах. Они будут немедленно удалены.
После этого соедините llama/main
с llama.cpp/main и models
с папкой, где у вас лежат веса моделей Llama. Затем запустите скрипт с аргументом OPENAI_API_MODEL=llama
или -l
.
Предупреждение
Этот скрипт предназначен для непрерывного выполнения в рамках системы управления задачами. Постоянный запуск этого скрипта может привести к высокому использованию 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 (Mar 28, 2023), опубликованного в Twitter. Эта версия сократилась до 140 строк: 13 комментариев, 22 пробела и 105 кода. Название репозитория появилось в реакции на оригинальный автономный агент - автор не хочет сказать, что это AGI.
Сделано с любовью @yoheinakajima, который, как оказалось, является VC (хотел бы посмотреть, что вы создаете!).