Концепции и устройство
Архитектура и принципы работы
Как устроена платформа AGONTS, детерминированные графы диалогов и оркестрация ИИ
Архитектура и принципы работы
AGONTS — это платформа корпоративной голосовой автоматизации, объединяющая гибкость современных больших языковых моделей (LLM) со строгим детерминированным контролем бизнес-процессов.
1. Фундаментальный принцип: Граф вместо свободной генерации
Главный риск использования генеративного ИИ в телефонии — галлюцинации и непредсказуемое поведение. AGONTS решает эту проблему разделением ответственности:
flowchart TD
subgraph FlowEngine["Ядро управления (Детерминированный граф)"]
NodeA["Узел A: Приветствие и цель"]
NodeB["Узел B: Уточнение времени"]
NodeC["Узел C: Фиксация согласия"]
NodeD["Узел D: Завершение звонка"]
NodeE["Узел E: Перевод на оператора"]
NodeA -->|Интент: готов общаться| NodeB
NodeA -->|Интент: отказ / стоп| NodeD
NodeA -->|Интент: сложный вопрос| NodeE
NodeB -->|Слот: время зафиксировано| NodeC
NodeB -->|Интент: оператор| NodeE
NodeC --> NodeD
end
LLM["LLM (Языковая модель)"]
NLU["NLU (Классификация намерений и слотов)"]
NodeA <-->|Контекстный промпт узла| LLM
NodeA <-->|Извлечение фактов| NLU- Граф состояний (Flow Graph) определяет допустимые переходы. Агент физически не способен перейти к оформлению услуги или закрытию сделки, пока не пройдены предшествующие обязательные узлы.
- Языковая модель (LLM) используется исключительно как контекстный генератор реплик внутри текущего узла и инструмент семантического анализа. Инструкция узла жестко ограничивает допустимую тему высказывания.
- NLU и слот-филлинг извлекают структурированные данные (даты, числа, согласия) по строгим схемам валидации.
2. Компоненты системы
| Компонент | Роль в системе | Стек / Реализация |
|---|---|---|
| Telephony Gateway | Прием и инициация звонков, медиа-потоки (RTP), ASR/TTS | SIP-транки, WebRTC / Audio streaming |
| Flow Execution Engine | Исполнение графа диалога, хранение сессионного контекста | Bun / TypeScript, движок состояний |
| Очереди задач (BullMQ) | Управление расписанием звонков, повторные попытки, вебхуки | Redis, BullMQ |
| База данных | Хранение истории вызовов, логов переходов, конфигураций графов | PostgreSQL (Drizzle ORM) |
| Провайдеры ИИ | Распознавание интентов, генерация реплик | Маршрутизация запросов к моделям (прямые провайдерные адаптеры — target) |
3. Жизненный цикл звонка
- Инициация (Dispatch): планировщик извлекает контакт из очереди BullMQ и направляет команду в шлюз телефонии.
- Установление соединения (Connect): телефония фиксирует снятие трубки абонентом и детектирует автоответчик (AMD). При успешном ответе создается контекст сессии.
- Итерация диалога (Turn Loop):
- Синтез речи узла (TTS) $\to$ воспроизведение абоненту.
- Захват реплики абонента $\to$ распознавание речи (ASR).
- Классификация намерения (NLU) $\to$ валидация извлеченных слотов.
- Определение целевого узла графа и проверка условий перехода.
- Завершение (Teardown): сброс линии, фиксация итогового статуса (
disposition) в PostgreSQL. - Постобработка (Callback Dispatch): формирование полезной нагрузки и асинхронная отправка вебхука клиенту.
4. Текущее и целевое состояние платформы
| Подсистема | Текущее состояние (observed-in-code) | Целевое состояние (target) |
|---|---|---|
| Шлюз ИИ | Гибридная маршрутизация с внешними прокси | Прямые адаптеры Vercel AI SDK к провайдерам моделей |
| Управление графами | Конфигурационные схемы диалогов в кодовой базе | Визуальный редактор графов с версионированием и песочницей |
| Очереди обзвона | Серверная оркестрация через BullMQ + PostgreSQL | Динамическое адаптивное распределение нагрузки по транкам |