BabyAGI

Logo

BabyAGI is an AI-powered task management system that uses OpenAI and Pinecone APIs to create, prioritize, and execute tasks.

View the Project on GitHub yoheinakajima/babyagi

babyagi

Задача

Этот Python-скрипт является примером системы управления задачами на основе искусственного интеллекта. Система использует API OpenAI и Pinecone для создания, определения приоритетов и выполнения задач. Основная идея этой системы заключается в том, что она создает задачи на основе результатов предыдущих задач и заранее определенной цели. Затем скрипт использует возможности обработки естественного языка (NLP) OpenAI для создания новых задач на основе цели, а Pinecone - для хранения и извлечения результатов задач в контексте. Это урезанная версия оригинального Task-Driven Autonomous Agent (Mar 28, 2023).

В этом README будет описано следующее:

  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 используется для хранения результатов задачи в индексе, вместе с именем задачи и любыми дополнительными метаданными.

Как этим пользоваться

Чтобы воспользоваться скриптом, необходимо выполнить следующие шаги:

  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. Запустите скрипт.

Все необязательные значения, указанные выше, могут быть также заданы в командной строке.

Поддерживаемые Модели

Этот скрипт работает со всеми моделями OpenAI, а также с Llama через Llama.cpp. Модель по умолчанию - gpt-3.5-turbo. Чтобы использовать другую модель, укажите ее через OPENAI_API_MODEL или используйте командную строку.

Llama

Скачайте последнюю версию Llama.cpp и следуйте инструкциям для ее создания. Вам также понадобятся модельные грузы (model weights) Llama.

После этого соедините 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 (хотел бы посмотреть, что вы создаете!).