Skip to content

Commit 25b542b

Browse files
authored
Merge pull request #3 from viartemev/orchestrator
improve codebase
2 parents 9dafb69 + 314fcc0 commit 25b542b

29 files changed

Lines changed: 1443 additions & 734 deletions

README.md

Lines changed: 68 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,92 @@
1-
# 🤖 PyAgentX: Autonomous Multi-Agent System for Software Development
1+
# PyAgentX: Продвинутая многоагентная AI-система
22

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

5-
Ключевой особенностью системы является **гибридная RAG-система**, которая совмещает семантический и ключевой поиск по базе знаний. Это позволяет агентам генерировать код, соответствующий внутренним стандартам, архитектурным паттернам и лучшим практикам вашей команды.
5+
Проект основан на самых современных концепциях в области Agentic AI, включая иерархическое планирование, самокоррекцию, продвинутый RAG с переранжированием и долгосрочную память.
66

7-
## 🚀 Ключевые возможности
7+
---
88

9-
- **Динамическая команда агентов**: Система гибко настраивается через YAML-конфиги. Вы можете легко добавлять, удалять или изменять роли агентов.
10-
- **Продвинутый RAG с гибридным поиском**: Использует комбинацию векторного поиска (семантика) и BM25 (ключевые слова) с Reciprocal Rank Fusion для максимально релевантных результатов из базы знаний.
11-
- **Динамическая конфигурация**: Все параметры системы, от моделей LLM до настроек RAG для каждого агента, задаются в YAML-файлах в директории `configs/`.
12-
- **Интерфейс командной строки (CLI)**: Удобный запуск и управление через `main.py` с использованием `typer`.
13-
- **Самостоятельная регистрация инструментов**: Агенты сами определяют и регистрируют свой инструментарий, что делает систему более модульной и инкапсулированной.
14-
- **Работа с файловой системой**: Агенты могут читать, создавать и редактировать файлы прямо в вашем проекте.
15-
- **Надежное тестирование**: Встроенный набор модульных тестов (`pytest`) с использованием моков позволяет проверять логику, не затрагивая реальные API.
9+
## 🏛️ Ключевые концепции
1610

17-
## 🏛️ Архитектура
11+
Мы разделили документацию на несколько разделов для удобства:
1812

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): Описание наших собственных легковесных систем для оценки качества и модерации ответов.
2018

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+
---
4920

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+
## 🛠️ Технологический стек
5822

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`
6036

61-
### 1. Клонирование репозитория
37+
---
6238

39+
## 🚀 Как запустить
40+
41+
### 1. Установка зависимостей
6342
```bash
64-
git clone https://github.com/your-username/PyAgentX.git
65-
cd PyAgentX
43+
pip install -r requirements.txt
6644
```
6745

6846
### 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`.
9348
```bash
94-
poetry run python -m scripts.build_knowledge_base
49+
cp .env.example .env
9550
```
96-
Этот шаг нужно повторять только при изменении файлов в папке `knowledge/`.
97-
98-
### 5. Запуск
99-
100-
Запустите главный скрипт, передав ему задачу.
10151

52+
### 3. Создание базы знаний
53+
Для работы RAG-пайплайна необходимо один раз создать векторную базу знаний из документов в директории `knowledge_base/`.
10254
```bash
103-
poetry run python -m main --briefing "Создай новую функцию в 'app/utils.py' для сложения двух чисел и напиши на нее тест в 'tests/test_utils.py'."
55+
python -m scripts.build_knowledge_base
10456
```
10557

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+
```
12363

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`.
12569

126-
## 💡 Следующий шаг: `PROJECT_CONTEXT.md`
70+
---
12771

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

Comments
 (0)