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
Логика работы:
- Пользователь запускает
main.py, передавая задачу через CLI. agent_factoryчитаетconfigs/config.yamlи конфигурации агентов, создавая команду.TaskDecomposerполучает задачу и разбивает ее на последовательность шагов.Orchestrator(вmain.py) последовательно передает каждый шаг соответствующему агенту.- Каждый агент перед выполнением задачи может обратиться к
KnowledgeRetrieverдля получения релевантного контекста из базы знаний. - Агент выполняет шаг, используя свои инструменты (
tools.py). - Цикл повторяется, пока все шаги не будут выполнены.
git clone https://github.com/your-username/PyAgentX.git
cd PyAgentXПроект использует Poetry для управления зависимостями.
- Установите Poetry (если не установлен):
pip install poetry
- Создайте виртуальное окружение и установите зависимости:
poetry install
- Создайте файл
.envв корне проекта, скопировав.env.example(если он есть) или создав новый. - Добавьте ваш ключ OpenAI:
OPENAI_API_KEY="sk-..."
Перед первым запуском необходимо проиндексировать вашу документацию из папки knowledge/.
poetry run python -m scripts.build_knowledge_baseЭтот шаг нужно повторять только при изменении файлов в папке knowledge/.
Запустите главный скрипт, передав ему задачу.
poetry run python -m main --briefing "Создай новую функцию в 'app/utils.py' для сложения двух чисел и напиши на нее тест в 'tests/test_utils.py'."Система начнет выполнение, и вы увидите логи работы агентов в консоли.
- Создайте новый класс агента в
app/agents/roles/, унаследовав его отAgent. - В
__init__нового агента зарегистрируйте необходимые ему инструменты с помощьюself.add_tool(). - Создайте для него YAML-конфиг в
configs/agents/. - Добавьте нового агента в главный
configs/config.yaml.
- Определите функцию-инструмент и ее JSON-схему в
app/agents/tools.py. - Добавьте вызов
self.add_tool()в__init__того агента, который должен использовать этот инструмент.
Просто добавьте новый .md файл в папку knowledge/ и перезапустите скрипт scripts/build_knowledge_base.py.
Для дальнейшего улучшения согласованности действий агентов планируется внедрение файла PROJECT_CONTEXT.md. Это будет "конституция" проекта, содержащая глобальные правила и стандарты, которая будет автоматически добавляться в системный промпт каждого агента.