Skip to content

Latest commit

 

History

History
128 lines (96 loc) · 9.45 KB

File metadata and controls

128 lines (96 loc) · 9.45 KB

🤖 PyAgentX: Autonomous Multi-Agent System for Software Development

PyAgentX — это продвинутая система на базе LLM, предназначенная для автоматизации полного цикла разработки программного обеспечения. Она использует команду специализированных ИИ-агентов, которые совместно работают над решением задач: от декомпозиции высокоуровневых целей до написания, проверки, тестирования и оценки кода.

Ключевой особенностью системы является гибридная RAG-система, которая совмещает семантический и ключевой поиск по базе знаний. Это позволяет агентам генерировать код, соответствующий внутренним стандартам, архитектурным паттернам и лучшим практикам вашей команды.

🚀 Ключевые возможности

  • Динамическая команда агентов: Система гибко настраивается через YAML-конфиги. Вы можете легко добавлять, удалять или изменять роли агентов.
  • Продвинутый RAG с гибридным поиском: Использует комбинацию векторного поиска (семантика) и BM25 (ключевые слова) с Reciprocal Rank Fusion для максимально релевантных результатов из базы знаний.
  • Динамическая конфигурация: Все параметры системы, от моделей LLM до настроек RAG для каждого агента, задаются в YAML-файлах в директории configs/.
  • Интерфейс командной строки (CLI): Удобный запуск и управление через main.py с использованием typer.
  • Самостоятельная регистрация инструментов: Агенты сами определяют и регистрируют свой инструментарий, что делает систему более модульной и инкапсулированной.
  • Работа с файловой системой: Агенты могут читать, создавать и редактировать файлы прямо в вашем проекте.
  • Надежное тестирование: Встроенный набор модульных тестов (pytest) с использованием моков позволяет проверять логику, не затрагивая реальные API.

🏛️ Архитектура

Система построена на модульных принципах, где каждый компонент имеет четкую зону ответственности.

PyAgentX/
├── app/
│   ├── agents/             # Логика и роли специализированных агентов
│   │   ├── roles/          # Классы для конкретных ролей (Coding, Testing, etc.)
│   │   ├── agent.py        # Базовый класс Agent с основной логикой
│   │   └── tools.py        # Определения инструментов (read_file, edit_file)
│   ├── factory/            # Фабрика для создания агентов
│   │   └── agent_factory.py
│   └── rag/                # Логика для Retrieval-Augmented Generation
│       └── retriever.py    # Гибридный ретривер (Vector + BM25)
├── configs/                # Конфигурационные файлы YAML
│   ├── agents/             # Конфиги для каждого агента
│   └── config.yaml         # Главный конфигурационный файл
├── db/                     # Локальная база данных (создается автоматически)
│   ├── chunks.json         # Текстовые чанки
│   ├── embeddings.npy      # Векторные эмбеддинги
│   └── bm25_index.pkl      # Индекс BM25 для ключевого поиска
├── knowledge/              # Исходники для базы знаний (документация в .md)
├── scripts/                # Вспомогательные скрипты
│   └── build_knowledge_base.py
├── tests/                  # Модульные тесты pytest
├── .env                    # Файл для секретных ключей
├── main.py                 # Точка входа в приложение (CLI на Typer)
├── poetry.lock             # Файл зависимостей Poetry
├── pyproject.toml          # Конфигурация проекта и зависимостей
└── README.md

Логика работы:

  1. Пользователь запускает main.py, передавая задачу через CLI.
  2. agent_factory читает configs/config.yaml и конфигурации агентов, создавая команду.
  3. TaskDecomposer получает задачу и разбивает ее на последовательность шагов.
  4. Orchestratormain.py) последовательно передает каждый шаг соответствующему агенту.
  5. Каждый агент перед выполнением задачи может обратиться к KnowledgeRetriever для получения релевантного контекста из базы знаний.
  6. Агент выполняет шаг, используя свои инструменты (tools.py).
  7. Цикл повторяется, пока все шаги не будут выполнены.

🛠️ Быстрый старт

1. Клонирование репозитория

git clone https://github.com/your-username/PyAgentX.git
cd PyAgentX

2. Настройка окружения

Проект использует Poetry для управления зависимостями.

  • Установите Poetry (если не установлен):
    pip install poetry
  • Создайте виртуальное окружение и установите зависимости:
    poetry install

3. Конфигурация

  • Создайте файл .env в корне проекта, скопировав .env.example (если он есть) или создав новый.
  • Добавьте ваш ключ OpenAI:
    OPENAI_API_KEY="sk-..."
    

4. Создание базы знаний

Перед первым запуском необходимо проиндексировать вашу документацию из папки knowledge/.

poetry run python -m scripts.build_knowledge_base

Этот шаг нужно повторять только при изменении файлов в папке knowledge/.

5. Запуск

Запустите главный скрипт, передав ему задачу.

poetry run python -m main --briefing "Создай новую функцию в 'app/utils.py' для сложения двух чисел и напиши на нее тест в 'tests/test_utils.py'."

Система начнет выполнение, и вы увидите логи работы агентов в консоли.

🧩 Расширение системы

Добавление нового агента

  1. Создайте новый класс агента в app/agents/roles/, унаследовав его от Agent.
  2. В __init__ нового агента зарегистрируйте необходимые ему инструменты с помощью self.add_tool().
  3. Создайте для него YAML-конфиг в configs/agents/.
  4. Добавьте нового агента в главный configs/config.yaml.

Добавление нового инструмента

  1. Определите функцию-инструмент и ее JSON-схему в app/agents/tools.py.
  2. Добавьте вызов self.add_tool() в __init__ того агента, который должен использовать этот инструмент.

Добавление знаний

Просто добавьте новый .md файл в папку knowledge/ и перезапустите скрипт scripts/build_knowledge_base.py.

💡 Следующий шаг: PROJECT_CONTEXT.md

Для дальнейшего улучшения согласованности действий агентов планируется внедрение файла PROJECT_CONTEXT.md. Это будет "конституция" проекта, содержащая глобальные правила и стандарты, которая будет автоматически добавляться в системный промпт каждого агента.