|
1 | | -# 🤖 PyAgentX: Autonomous Multi-Agent System for Software Development |
| 1 | +# PyAgentX: Продвинутая многоагентная AI-система |
2 | 2 |
|
3 | | -**PyAgentX** — это продвинутая система на базе LLM, предназначенная для автоматизации полного цикла разработки программного обеспечения. Она использует команду специализированных ИИ-агентов, которые совместно работают над решением задач: от декомпозиции высокоуровневых целей до написания, проверки, тестирования и оценки кода. |
| 3 | +**PyAgentX** — это фреймворк для создания автономных AI-агентов, способных решать сложные, многошаговые задачи. Система использует архитектуру многоагентной команды, где центральный Оркестратор управляет командой узкоспециализированных агентов для достижения глобальной цели. |
4 | 4 |
|
5 | | -Ключевой особенностью системы является **гибридная RAG-система**, которая совмещает семантический и ключевой поиск по базе знаний. Это позволяет агентам генерировать код, соответствующий внутренним стандартам, архитектурным паттернам и лучшим практикам вашей команды. |
| 5 | +Проект основан на самых современных концепциях в области Agentic AI, включая иерархическое планирование, самокоррекцию, продвинутый RAG с переранжированием и долгосрочную память. |
6 | 6 |
|
7 | | -## 🚀 Ключевые возможности |
| 7 | +--- |
8 | 8 |
|
9 | | -- **Динамическая команда агентов**: Система гибко настраивается через YAML-конфиги. Вы можете легко добавлять, удалять или изменять роли агентов. |
10 | | -- **Продвинутый RAG с гибридным поиском**: Использует комбинацию векторного поиска (семантика) и BM25 (ключевые слова) с Reciprocal Rank Fusion для максимально релевантных результатов из базы знаний. |
11 | | -- **Динамическая конфигурация**: Все параметры системы, от моделей LLM до настроек RAG для каждого агента, задаются в YAML-файлах в директории `configs/`. |
12 | | -- **Интерфейс командной строки (CLI)**: Удобный запуск и управление через `main.py` с использованием `typer`. |
13 | | -- **Самостоятельная регистрация инструментов**: Агенты сами определяют и регистрируют свой инструментарий, что делает систему более модульной и инкапсулированной. |
14 | | -- **Работа с файловой системой**: Агенты могут читать, создавать и редактировать файлы прямо в вашем проекте. |
15 | | -- **Надежное тестирование**: Встроенный набор модульных тестов (`pytest`) с использованием моков позволяет проверять логику, не затрагивая реальные API. |
| 9 | +## 🏛️ Ключевые концепции |
16 | 10 |
|
17 | | -## 🏛️ Архитектура |
| 11 | +Мы разделили документацию на несколько разделов для удобства: |
18 | 12 |
|
19 | | -Система построена на модульных принципах, где каждый компонент имеет четкую зону ответственности. |
| 13 | +1. [**Архитектура многоагентной системы**](./docs/01_multi_agent_architecture.md): Обзор Оркестратора, Планировщика, Исполнителей и принципов их взаимодействия. |
| 14 | +2. [**Ядро агента: Цикл ReAct и Рефлексия**](./docs/02_agent_core_loop.md): Описание внутреннего цикла работы каждого агента и механизма самокоррекции при ошибках. |
| 15 | +3. [**Продвинутый RAG-пайплайн**](./docs/03_advanced_rag.md): Детальное описание нашего двухэтапного RAG с семантическим чанкированием и переранжированием. |
| 16 | +4. [**Долгосрочная память**](./docs/04_long_term_memory.md): Как агенты запоминают информацию между сессиями для повышения эффективности. |
| 17 | +5. [**Оценка и Безопасность**](./docs/04_evaluation_and_safety.md): Описание наших собственных легковесных систем для оценки качества и модерации ответов. |
20 | 18 |
|
21 | | -``` |
22 | | -PyAgentX/ |
23 | | -├── app/ |
24 | | -│ ├── agents/ # Логика и роли специализированных агентов |
25 | | -│ │ ├── roles/ # Классы для конкретных ролей (Coding, Testing, etc.) |
26 | | -│ │ ├── agent.py # Базовый класс Agent с основной логикой |
27 | | -│ │ └── tools.py # Определения инструментов (read_file, edit_file) |
28 | | -│ ├── factory/ # Фабрика для создания агентов |
29 | | -│ │ └── agent_factory.py |
30 | | -│ └── rag/ # Логика для Retrieval-Augmented Generation |
31 | | -│ └── retriever.py # Гибридный ретривер (Vector + BM25) |
32 | | -├── configs/ # Конфигурационные файлы YAML |
33 | | -│ ├── agents/ # Конфиги для каждого агента |
34 | | -│ └── config.yaml # Главный конфигурационный файл |
35 | | -├── db/ # Локальная база данных (создается автоматически) |
36 | | -│ ├── chunks.json # Текстовые чанки |
37 | | -│ ├── embeddings.npy # Векторные эмбеддинги |
38 | | -│ └── bm25_index.pkl # Индекс BM25 для ключевого поиска |
39 | | -├── knowledge/ # Исходники для базы знаний (документация в .md) |
40 | | -├── scripts/ # Вспомогательные скрипты |
41 | | -│ └── build_knowledge_base.py |
42 | | -├── tests/ # Модульные тесты pytest |
43 | | -├── .env # Файл для секретных ключей |
44 | | -├── main.py # Точка входа в приложение (CLI на Typer) |
45 | | -├── poetry.lock # Файл зависимостей Poetry |
46 | | -├── pyproject.toml # Конфигурация проекта и зависимостей |
47 | | -└── README.md |
48 | | -``` |
| 19 | +--- |
49 | 20 |
|
50 | | -**Логика работы:** |
51 | | -1. Пользователь запускает `main.py`, передавая задачу через CLI. |
52 | | -2. `agent_factory` читает `configs/config.yaml` и конфигурации агентов, создавая команду. |
53 | | -3. `TaskDecomposer` получает задачу и разбивает ее на последовательность шагов. |
54 | | -4. `Orchestrator` (в `main.py`) последовательно передает каждый шаг соответствующему агенту. |
55 | | -5. Каждый агент перед выполнением задачи может обратиться к `KnowledgeRetriever` для получения релевантного контекста из базы знаний. |
56 | | -6. Агент выполняет шаг, используя свои инструменты (`tools.py`). |
57 | | -7. Цикл повторяется, пока все шаги не будут выполнены. |
| 21 | +## 🛠️ Технологический стек |
58 | 22 |
|
59 | | -## 🛠️ Быстрый старт |
| 23 | +- **Язык**: Python 3.10+ |
| 24 | +- **LLM API**: OpenAI |
| 25 | +- **Оркестрация и ядро агентов**: Кастомная реализация |
| 26 | +- **Семантическое чанкирование**: `semchunk` |
| 27 | +- **RAG**: |
| 28 | + - `unstructured` для парсинга документов |
| 29 | + - `rank-bm25` для sparse-поиска |
| 30 | + - `numpy` для векторных операций |
| 31 | + - `sentence-transformers` для Cross-Encoder Re-ranking |
| 32 | +- **Долгосрочная память**: `sqlite3` |
| 33 | +- **Безопасность**: `guardrails-ai` |
| 34 | +- **Оценка**: `deepeval`, `pytest` |
| 35 | +- **Зависимости**: `python-dotenv`, `tiktoken` |
60 | 36 |
|
61 | | -### 1. Клонирование репозитория |
| 37 | +--- |
62 | 38 |
|
| 39 | +## 🚀 Как запустить |
| 40 | + |
| 41 | +### 1. Установка зависимостей |
63 | 42 | ```bash |
64 | | -git clone https://github.com/your-username/PyAgentX.git |
65 | | -cd PyAgentX |
| 43 | +pip install -r requirements.txt |
66 | 44 | ``` |
67 | 45 |
|
68 | 46 | ### 2. Настройка окружения |
69 | | - |
70 | | -Проект использует [Poetry](https://python-poetry.org/) для управления зависимостями. |
71 | | - |
72 | | -- Установите Poetry (если не установлен): |
73 | | - ```bash |
74 | | - pip install poetry |
75 | | - ``` |
76 | | -- Создайте виртуальное окружение и установите зависимости: |
77 | | - ```bash |
78 | | - poetry install |
79 | | - ``` |
80 | | - |
81 | | -### 3. Конфигурация |
82 | | - |
83 | | -- Создайте файл `.env` в корне проекта, скопировав `.env.example` (если он есть) или создав новый. |
84 | | -- Добавьте ваш ключ OpenAI: |
85 | | - ``` |
86 | | - OPENAI_API_KEY="sk-..." |
87 | | - ``` |
88 | | - |
89 | | -### 4. Создание базы знаний |
90 | | - |
91 | | -Перед первым запуском необходимо проиндексировать вашу документацию из папки `knowledge/`. |
92 | | - |
| 47 | +Скопируйте `.env.example` в `.env` и укажите ваш `OPENAI_API_KEY`. |
93 | 48 | ```bash |
94 | | -poetry run python -m scripts.build_knowledge_base |
| 49 | +cp .env.example .env |
95 | 50 | ``` |
96 | | -Этот шаг нужно повторять только при изменении файлов в папке `knowledge/`. |
97 | | - |
98 | | -### 5. Запуск |
99 | | - |
100 | | -Запустите главный скрипт, передав ему задачу. |
101 | 51 |
|
| 52 | +### 3. Создание базы знаний |
| 53 | +Для работы RAG-пайплайна необходимо один раз создать векторную базу знаний из документов в директории `knowledge_base/`. |
102 | 54 | ```bash |
103 | | -poetry run python -m main --briefing "Создай новую функцию в 'app/utils.py' для сложения двух чисел и напиши на нее тест в 'tests/test_utils.py'." |
| 55 | +python -m scripts.build_knowledge_base |
104 | 56 | ``` |
105 | 57 |
|
106 | | -Система начнет выполнение, и вы увидите логи работы агентов в консоли. |
107 | | - |
108 | | -## 🧩 Расширение системы |
109 | | - |
110 | | -### Добавление нового агента |
111 | | - |
112 | | -1. Создайте новый класс агента в `app/agents/roles/`, унаследовав его от `Agent`. |
113 | | -2. В `__init__` нового агента зарегистрируйте необходимые ему инструменты с помощью `self.add_tool()`. |
114 | | -3. Создайте для него YAML-конфиг в `configs/agents/`. |
115 | | -4. Добавьте нового агента в главный `configs/config.yaml`. |
116 | | - |
117 | | -### Добавление нового инструмента |
118 | | - |
119 | | -1. Определите функцию-инструмент и ее JSON-схему в `app/agents/tools.py`. |
120 | | -2. Добавьте вызов `self.add_tool()` в `__init__` того агента, который должен использовать этот инструмент. |
121 | | - |
122 | | -### Добавление знаний |
| 58 | +### 4. Запуск тестов (Опционально) |
| 59 | +Чтобы убедиться, что все работает корректно: |
| 60 | +```bash |
| 61 | +pytest |
| 62 | +``` |
123 | 63 |
|
124 | | -Просто добавьте новый `.md` файл в папку `knowledge/` и перезапустите скрипт `scripts/build_knowledge_base.py`. |
| 64 | +### 5. Запуск веб-сервера |
| 65 | +```bash |
| 66 | +uvicorn app.main:app --reload |
| 67 | +``` |
| 68 | +После запуска API будет доступно по адресу `http://127.0.0.1:8000/docs`. |
125 | 69 |
|
126 | | -## 💡 Следующий шаг: `PROJECT_CONTEXT.md` |
| 70 | +--- |
127 | 71 |
|
128 | | -Для дальнейшего улучшения согласованности действий агентов планируется внедрение файла `PROJECT_CONTEXT.md`. Это будет "конституция" проекта, содержащая глобальные правила и стандарты, которая будет автоматически добавляться в системный промпт каждого агента. |
| 72 | +## 🏗️ Структура проекта |
| 73 | +``` |
| 74 | +PyAgentX/ |
| 75 | +├── app/ |
| 76 | +│ ├── agents/ # Логика агентов, их роли и инструменты |
| 77 | +│ │ ├── roles/ |
| 78 | +│ │ └── prompts/ |
| 79 | +│ ├── evaluation/ # Собственный фреймворк оценки |
| 80 | +│ ├── memory/ # Менеджер долгосрочной памяти (SQLite) |
| 81 | +│ ├── rag/ # RAG-пайплайн (ретривер) |
| 82 | +│ ├── safety/ # Собственные "ограждения" (Guardrails) |
| 83 | +│ ├── main.py # FastAPI приложение |
| 84 | +│ └── orchestrator.py # Оркестратор |
| 85 | +├── docs/ # Детальная документация |
| 86 | +├── knowledge_base/ # Исходные документы для базы знаний |
| 87 | +├── scripts/ # Скрипты (например, для создания RAG-базы) |
| 88 | +├── tests/ # Тесты |
| 89 | +├── .env.example |
| 90 | +├── README.md |
| 91 | +└── requirements.txt |
| 92 | +``` |
0 commit comments