Initial import
This commit is contained in:
80
PROJECT_OVERVIEW.md
Normal file
80
PROJECT_OVERVIEW.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# AgentUI Project Overview
|
||||
|
||||
## Цель проекта
|
||||
AgentUI — это прокси‑сервер с визуальным редактором пайплайнов (на базе Drawflow), который нормализует запросы от различных клиентов в единый формат и выполняет их через цепочку узлов (nodes). Это позволяет гибко собирать пайплайны обработки текстовых/LLM‑запросов без необходимости вручную интегрировать каждый провайдер.
|
||||
|
||||
---
|
||||
|
||||
## Основные компоненты
|
||||
|
||||
### Фронтенд: Визуальный редактор
|
||||
- Построен на **Drawflow**.
|
||||
- Поддерживает узлы, входы/выходы и соединения.
|
||||
- Реализована надёжная сериализация/десериализация:
|
||||
- `toPipelineJSON()` сохраняет структуру + все соединения.
|
||||
- `fromPipelineJSON()` восстанавливает узлы и соединения с учётом времени рендера DOM (retry‑логика).
|
||||
- Исправлены баги исчезающих соединений.
|
||||
- В инспекторе узлов отображается оригинальный ID узла, а не runtime ID от Drawflow.
|
||||
- UI подсказки: макрохинты в синтаксисе `[[...]]` (например `[[VAR:system.prompt]]`, `[[OUT:node1.text]]`).
|
||||
|
||||
### Бэкенд: Исполнение пайплайна
|
||||
- Основной код: [`agentui/pipeline/executor.py`](agentui/pipeline/executor.py).
|
||||
- Выполняется **топологическая сортировка** графа для правильного порядка исполнения и предотвращения циклов.
|
||||
- Узлы:
|
||||
- **RawForwardNode**:
|
||||
- Прямой HTTP‑форвардинг с макросами в `base_url`, `override_path`, `headers`.
|
||||
- Автоопределение провайдера.
|
||||
- **ProviderCallNode**:
|
||||
- Унифицированный вызов LLM‑провайдеров.
|
||||
- Преобразует внутренний формат сообщений в специфический формат для OpenAI, Gemini, Anthropic.
|
||||
- Поддерживает параметры `temperature`, `max_tokens`, `top_p`, `stop` (или аналоги).
|
||||
- Поддержка **макросов**:
|
||||
- `{{ path }}` — Jinja‑подобный.
|
||||
- `[[VAR:...]]` — доступ к данным контекста (system, chat, params).
|
||||
- `[[OUT:nodeId(.attr)]]` — ссылки на вывод других узлов.
|
||||
- `{{ OUT.node.* }}` — альтернативная форма.
|
||||
|
||||
### API сервер (`agentui/api/server.py`)
|
||||
- Нормализует запросы под форматы `/v1/chat/completions`, Gemini, Anthropic.
|
||||
- Формирует контекст макросов (vendor, model, params, incoming).
|
||||
|
||||
---
|
||||
|
||||
## Текущий прогресс
|
||||
- Исправлены баги сериализации соединений во фронтенде.
|
||||
- Добавлены подсказки по макросам.
|
||||
- Реализована топологическая сортировка исполнения.
|
||||
- Создан универсальный рендер макросов `render_template_simple`.
|
||||
- Интегрирован RawForward с макроподстановкой.
|
||||
- ProviderCall теперь преобразует сообщения под формат конкретного провайдера.
|
||||
|
||||
---
|
||||
|
||||
## Текущая задача (для нового разработчика)
|
||||
|
||||
В проекте мы начинаем реализацию **Prompt Manager**, который станет частью узла `ProviderCall`.
|
||||
|
||||
**Что уже решено:**
|
||||
- Архитектура пайплайна, сериализация/десериализация, макросная система, базовые конвертеры форматов.
|
||||
|
||||
**Что нужно сделать:**
|
||||
- [ ] Спроектировать структуру prompt‑менеджера: массив блоков `{ name, role, prompt, enabled, order }`.
|
||||
- [ ] Добавить универсальный рендер макросов, который применяется ко всем блокам перед конвертацией.
|
||||
- [ ] Доработать конвертеры форматов под OpenAI, Gemini, Anthropic, чтобы они учитывали эти блоки.
|
||||
- [ ] Интегрировать prompt‑менеджер в `ProviderCallNode`:
|
||||
- Сборка последовательности сообщений.
|
||||
- Подстановка макросов.
|
||||
- Конвертация в провайдерский формат.
|
||||
- [ ] Реализовать UI prompt‑менеджера во фронтенде:
|
||||
- CRUD операций над блоками.
|
||||
- Drag&Drop сортировку.
|
||||
- Возможность включать/выключать блок.
|
||||
- Выбор роли (`user`, `system`, `assistant`, `tool`).
|
||||
|
||||
---
|
||||
|
||||
## Важные файлы
|
||||
- [`static/editor.html`](static/editor.html) — визуальный редактор пайплайнов.
|
||||
- [`agentui/pipeline/executor.py`](agentui/pipeline/executor.py) — логика исполнения пайплайнов, макросов и узлов.
|
||||
- [`agentui/api/server.py`](agentui/api/server.py) — REST API для внешних клиентов.
|
||||
- [`pipeline.json`](pipeline.json) — сохранённый пайплайн по умолчанию.
|
||||
Reference in New Issue
Block a user