Главная / Статьи

Анатомия бизнес-команды ИИ: координация агентов с помощью LangGraph и FastAPI

Обзор платформы с открытым исходным кодом для работы нескольких агентов: как кооснователи, менеджеры и специалисты согласовывают действия, обмениваются информацией, приостанавливают работу для получения одобрения и предоставляют отчеты.

Издатель: REACTAPP.TOP16 мин чтения3791 слов

Источники: Building a Multi-Agent Business Automation Platform with LangGraph, FastAPI, React, Neo4j, Qdrant, and Redis

Большинство решений в области искусственного интеллекта для автоматизации по-прежнему работают в режиме одного агента: одна модель получает запрос и возвращает ответ. Это подходит для ответов на вопросы, но в реальной бизнес-деятельности задачи распределяются между разными ролями, некоторые шаги выполняются параллельно, а другие требуют подтверждения человека. В этом обзоре рассматривается платформа с открытым исходным кодом Multi Agent for Business Automation, которая моделирует небольшую команду стартапа как скоординированные агенты. К концу вы должны понять, как взаимодействуют её механизмы оркестрации, память, системы утверждения и API, а также какие элементы дизайна можно использовать в собственных системах агентов.

Рассмотрим, как на самом деле планируется новый проект. Основатель формулирует видение. Менеджер превращает его в конкретные задачи. Финансовый отдел проверяет прогнозы доходов и затрат, отдел маркетинга определяет позиционирование, юридический отдел выявляет риски, а отдел продаж готовит мероприятия по привлечению клиентов. Часть этих действий выполняется по порядку, часть — одновременно, а некоторые блокируются до тех пор, пока человек не одобрит следующий шаг.

Согласно документу README, проект представляет собой платформу для автоматизации бизнес-процессов и поддержки принятия решений, в которой агенты с разными ролями, характеристиками и инструментами координируются с помощью рабочих процессов LangGraph, общей памяти и механизмов одобрения с участием человека (HITL), при этом также предусмотрена генерация отчетов и внешние интеграции. Цель явно не создание еще одного чат-бота, а формирование виртуального офиса, где агенты сотрудничают так же, как команда стартапа.

Пять архитектурных слоев

Система чётко делится на пять слоёв:

  • Фронтенд: панель управления на базе React для ввода данных через чат, визуализации рабочих процессов, утверждения задач и аналитики.
  • Бэкенд API: REST-концовки FastAPI, потоки WebSocket, механизмы аутентификации, генерация отчётов и API для работы с памятью.
  • Слой агентов: агенты типа Cofounder, Manager, Finance, Marketing, Legal, Money и Sales.
  • Слой оркестрации: рабочие процессы LangGraph в сочетании с пользовательским оркестратором, делегирование задач и контроль состояния.
  • Память и инфраструктура: Neo4j, Qdrant, Redis или Upstash, Supabase и хранилище отчётов.

Согласно документации README, стек включает React 18 с Vite, FastAPI, LangGraph и LangChain вместе с CrewAI для работы агентов, Neo4j, Qdrant и Redis для хранения данных в памяти и управления очередями, а также Supabase в качестве необязательного слоя для аутентификации и сохранения данных.

Общий жизненный цикл проходит сверху вниз: от идеи пользователя через агентов-лидеров к специалистам, а затем в общую память, для получения одобрений и результатов работы.

User Vision
   ↓
Cofounder Agent
   ↓
Manager Agent
   ↓
Specialist Agents
   ├── Finance
   ├── Marketing
   ├── Legal
   ├── Money
   └── Sales
   ↓
Shared Memory + Approval Gates
   ↓
Reports + Dashboard + Integrations

Главный вывод из этой диаграммы заключается в том, что речь идет о системе рабочих процессов, а не о цепочке промптов. Состояние, память, процедуры одобрения, повторные попытки, возможности мониторинга и сохраненные результаты — всё это является ключевыми аспектами такой системы.

Пятиэтапный рабочий процесс

Этап 1: преобразование расплывчатой идеи в структурированный контекст

Всё начинается с того, что пользователь объясняет, чего он хочет: концепцию продукта, бизнес-идею или какую-либо операционную цель. Агент-сооснователь получает эту информацию, которая может быть представлена даже в виде одного предложения:

Input:
"I want to build an AI tool for small businesses."

Его задача — преобразовать эту информацию в структурированный контекст, с которым сможет работать весь остальной коллектив:

Cofounder Output:
- Vision statement
- Target users
- Problem definition
- Market opportunity
- Strategic assumptions
- Initial business direction

В документе README этот шаг называется «Сбор информации о видении». На серверной части его можно запустить через несколько точек входа, в зависимости от того, нужен ли клиент однократный проект, диалог или углублённая сессия:

POST /api/start-project
POST /api/conversation/start
POST /api/enhanced/start-session

Независимо от выбранного пути, серверная часть создаёт проект или сессию, фиксирует начальное состояние и направляет сообщение соответствующему агенту.

Этап 2: планирование и распределение задач менеджером

После того как видение структурировано, агент-менеджер берет управление на себя и разбивает стратегию на конкретные задачи, которые можно реально выполнить:

Manager Responsibilities:
- Convert vision into roadmap
- Break work into functional domains
- Create agent assignments
- Define task dependencies
- Decide which agents should execute in parallel

В пользовательском оркестраторе это реализовано в функции AgentOrchestrator.start_project(), расположенной в файле backend/flows/orchestrator.py. Она генерирует идентификатор проекта, сначала запускает компонент Cofounder, передает его результат менеджеру, а затем запускает специалистов в соответствии с заданиями менеджера. В виде псевдокода:

cofounder_result = await Cofounder.execute(vision_task)
manager_result = await Manager.execute(manager_task)
specialist_results = await execute_specialists(manager_result)
generate_outputs(all_results)

Менеджер является слоем управления. Без него каждый специалист работал бы изолированно, исходя из первоначальной идеи, и возвращал бы результаты, которые не связаны друг с другом. Именно централизованное разделение задач в одном агенте позволяет результатам специалистов образовывать целостный план.

Этап 3: параллельная работа специалистов

Как только задания определены, их берут на себя агенты домена. Стандартный состав команды и их обязанности следующие:

  • Сооснователь: видение, стратегия и рыночные возможности.
  • Менеджер: план действий, разбиение задач и делегирование обязанностей.
  • Финансы: модель доходов, модель затрат, показатель ROI и прогнозы.
  • Маркетинг: позиционирование, кампании и стратегия контента.
  • Юридический отдел: соблюдение норм, оценка рисков, контракты и проверка политик.
  • Финансовые вопросы: ценообразование, монетизация и операции с доходами.
  • Продажи: поток заказов, взаимодействие с клиентами и стратегия продаж.

Каждый агент определяется в файле backend/agents/personalities.py, причем каждое определение включает характеристики, стиль общения, сферы экспертизы и инструменты, специфичные для его роли. Это важно: агенты моделируются как исполнители, выполняющие задачи в рамках своей роли, с собственным поведением, порогами уверенности и контекстом задачи, а не просто как разные системные команды.

Выполнение задач осуществляется функцией _execute_specialists(), которая готовит по одной задаче для каждого специалиста (финансы, маркетинг, юриспруденция и финансы, а также продажи при их включении). Каждый вызов агента оборачивается таймаутом в 60 секунд:

parallel_executions = [
    asyncio.wait_for(agent.execute(task), timeout=60.0)
    for agent_name, task in specialist_tasks
]

Затем все эти обернутые вызовы ожидаются одновременно:

specialist_results = await asyncio.gather(
    *parallel_executions,
    return_exceptions=True
)

Поскольку функция asyncio.gather() работает с параметром return_exceptions=True, тайм-аут или сбой в одном агенте возвращается в списке результатов в виде объекта исключения вместо отмены всей обработки. Это подразумевает необходимость в коде-запускающем проверки каждого результата и принятия решения о том, следует ли попытаться выполнить задачу снова, пропустить её или передать проблему на более высокий уровень. Более общее архитектурное решение является разумным: когда анализ в области финансов никогда не нуждается в результатах работы по маркетингу, и наоборот, нет причин выполнять эти задачи поочередно.

Этап 4: общая память и передача контекста

Система с несколькими агентами быстро теряет эффективность, когда каждый агент имеет доступ только к собственному контексту. Платформа решает эту проблему с помощью единой слоя памяти, в котором каждый элемент имеет чётко определённую функцию:

Neo4j      → graph memory and relationships
Qdrant     → vector memory and semantic retrieval
Redis      → task queue, cache, runtime coordination
Local data → fallback storage and exported outputs

В документации README это описывается как память графа Neo4j, векторный поиск Qdrant, очереди Redis или Upstash, а также локальное кэширование с гибким переходом на альтернативные решения. Каждый инструмент предназначен для удовлетворения разных потребностей.

Память графа хранит связи между агентами, задачами, проектами и результатами:

Agent → executed → Task
Task → belongs_to → Project
Agent → produced → Output
Output → depends_on → PriorContext

Такая структура позволяет визуализировать процесс сотрудничества и точно определять, какой агент создал тот или иной результат и на основе какого предыдущего контекста.

Векторная память в Qdrant обеспечивает семантическое поиск, благодаря чему агент может искать предыдущие работы по смыслу, а не по идентификатору:

"Find previous market assumptions."
"Retrieve prior financial analysis."
"Use the earlier legal risk summary."

Память очередей с поддержкой Redis отвечает за координацию во время выполнения программы:

- Event streaming
- Task queues
- Cache
- Agent activity updates
- WebSocket event propagation

Проект также корректно справляется с отсутствием некоторых сервисов. Во время локальной разработки Redis можно заменить адаптером в памяти, а вызовы больших языков моделирования можно направлять на имитацию поставщика. Это снижает барьеры для запуска всей системы на ноутбуке без необходимости настраивать все производственные зависимости, хотя это также означает, что локальные тесты не выявят проблем, возникающих только с реальными сервисами.

Этап 5: утверждение человеком

Действия с высоким влиянием не должны выполняться автоматически, и здесь утверждение человеком является частью основного рабочего процесса, а не дополнением. Правила применяются к решениям, которые могут повлиять на:

- Customer-facing campaigns
- Pricing recommendations
- Legal-sensitive outputs
- CRM updates
- Social media publishing
- Financial projections
- Business-critical recommendations

В документации README описаны хуки уведомлений в Slack и настраиваемые времена ожидания для этих процессов утверждения. С точки зрения API, возможности утверждения предоставляются через такие концовки, как:

GET  /api/approvals/pending
POST /api/approvals/{approval_id}/respond
GET  /api/approvals/advanced/pending
GET  /api/approvals/stats

Основной цикл жизни процесса утверждения выглядит следующим образом:

Agent generates action
   ↓
System evaluates confidence/risk
   ↓
Approval request is created
   ↓
Frontend or Slack notifies human
   ↓
Human approves/rejects/provides feedback
   ↓
Workflow continues or stops

Результатом является модель автономии с уровнями контроля: задачи с низким риском выполняются автоматически, в то время как все операции, связанные с клиентами, финансами или юридически чувствительной информацией, ожидают решения человека. Если вы разрабатываете подобные механизмы контроля, соответствующий обзор шаблонов маршрутизации, распространения задач и утверждения в LangGraph подробнее рассматривает механизмы на уровне графа.

Внутри бэкенда FastAPI

Основная точка входа бэкенда, backend/main.py, при запуске приложения создает набор глобальных сервисов:

AgentOrchestrator
Enhanced Orchestrator
ReportGenerator
SimplePredictor
AgentCollaborator
AdvancedApprovalManager
AgentService
ReportService
LangGraphOrchestrator
Queue Manager

Согласно README, каждый маршрут настраивается в файле backend/main.py; backend/api/main.py представляет собой более легкий альтернативный вариант точки входа, который настраивает только часть маршрутов. Код организован по принципу разделения ответственностей:

backend/
├── main.py                 # Primary FastAPI app
├── api/                    # Route controllers
├── agents/                 # Agent implementations and personalities
├── workflows/              # LangGraph and HITL orchestrators
├── flows/                  # PRD DAG orchestrator
├── memory/                 # Graph, vector, cache managers
├── task_queue/             # Redis/Upstash queue with fallback
├── integrations/           # HubSpot, Slack, Instagram clients
├── approvals/              # Approval managers
├── collaboration/          # Cross-agent communication
├── outputs/                # Report generation
├── analytics/              # Predictions and metrics
├── auth/                   # Supabase auth
├── services/               # LLM, agent, report services
└── tools/                  # Search and tool registry

Стоит обратить внимание на разделение между workflows/ (оркестраторы LangGraph и HITL) и flows/ (оркестратор DAG, основанный на PRD): проект использует два подхода к оркестрации одновременно, что обеспечивает гибкость, но требует проверки того, какой путь используется для конкретного эндпоинта.

Интерфейс API, разделенный по группам

Аутентификация

POST /api/auth/signup
POST /api/auth/signin
GET  /api/auth/user

В режиме, имитирующем производственную среду, эти эндпоинты опираются на аутентификацию Supabase. В локальном или демо-режиме приложение может полностью обойтись без Supabase и использовать более простую логику разработки. В README перечислены параметры конфигурации, включая DEMO_MODE, переменные Supabase и переменные поставщика LLM. Соответствующие обработчики:

signup()          → creates user account
signin()          → authenticates user
get_current_user()→ verifies token and returns user profile

Жизненный цикл проекта

GET  /api/projects
POST /api/projects
POST /api/start-project
POST /api/auto-execute
GET  /api/auto-execute/status

Это соответствует следующим функциям:

get_user_projects()       → fetch projects for authenticated user
create_project()          → create new project record
start_project()           → execute Cofounder → Manager → Specialists workflow
auto_execute_project()    → start automated coordination from raw vision
get_auto_execution_status() → return execution progress and logs

start_project() является сердцем этой группы. Его внутренняя последовательность выглядит следующим образом:

1. Generate project_id
2. Execute Cofounder Agent
3. Log Cofounder result
4. Execute Manager Agent with Cofounder context
5. Log Manager result
6. Execute specialist agents in parallel
7. Export and persist final outputs
8. Return project status and timeline

Эта последовательность напрямую соответствует AgentOrchestrator.start_project() и _execute_specialists() в модуле оркестратора.

Усовершенствованные сессии

POST /api/enhanced/start-session
POST /api/enhanced/continue-session
POST /api/enhanced/approve-and-execute
GET  /api/enhanced/session-status
GET  /api/enhanced/live-logs
GET  /api/enhanced/session-results
GET  /api/enhanced/system-metrics
POST /api/enhanced/cancel-session
POST /api/enhanced/cleanup-sessions

У каждого конечного пункта есть узкая цель:

start-session        → create enhanced automation session
continue-session     → continue existing multi-turn planning session
approve-and-execute  → approve captured vision and run workflow
session-status       → inspect session state
live-logs            → stream logs for UI monitoring
session-results      → return final session output
system-metrics       → expose high-level runtime metrics
cancel-session       → stop active session
cleanup-sessions     → remove old sessions

Этот путь более ориентирован на производственную среду, поскольку он разделяет диалог, утверждение, выполнение, мониторинг и получение результатов на отдельные вызовы. Клиент может проверять статус или получать логи в реальном времени, не держа открытым длительный запрос, а сессию можно явно отменить или очистить.

Управление агентами

GET  /api/agents/status
GET  /api/agents/list
GET  /api/agents/personalities
GET  /api/agents/configs
POST /api/agents/configs
POST /api/agents/execute
GET  /api/agents/logs/live

Что делает каждый маршрут:

agents/status       → current status of all agents
agents/list         → available agent inventory
agents/personalities→ UI-visible personality metadata
agents/configs      → current agent runtime settings
update configs      → update temperature, approval mode, priority, enabled flag
agents/execute      → execute a single agent manually
logs/live           → recent agent execution logs

При вызове /api/agents/list список агентов возвращается разделенным на четыре категории (стратегические, бизнес-агенты, операционные, специализированные), а конечные точки настройки во время выполнения позволяют оператору изменять параметры такие как уровень сложности, режим одобрения, приоритет и статус активации агента.

Беседы

POST /api/conversation/start
POST /api/conversation/{conversation_id}/message
POST /api/conversation/{conversation_id}/approve

Обработчики, отвечающие за это:

start_conversation()     → starts a Cofounder-led discovery conversation
continue_conversation()  → continues the existing conversation with stored context
approve_conversation()   → approves the captured vision and starts task distribution

Этот процесс существует для того, чтобы система могла собрать достаточно информации перед тем, как начать использование специализированных агентов. Внутри система действует следующим образом:

1. User sends initial idea
2. Cofounder Agent asks clarifying questions or structures the vision
3. Conversation state is persisted
4. System detects whether vision is ready for approval
5. User approves
6. System starts agent coordination

В оркестраторе функция start_conversation() присваивает новый идентификатор беседы, сохраняет введенный пользователем текст, вызывает агента Cofounder, сохраняет ответ и возвращает флаг ready_for_approval, указывающий клиенту, готово ли решение к одобрению.

Рабочие процессы LangGraph

POST /api/workflow/execute
POST /api/workflow/resume/{thread_id}

Соответствующие функции:

execute_langgraph_workflow() → runs a LangGraph-based workflow
resume_workflow()            → resumes workflow from checkpoint

Эти конечные точки предоставляют прямой доступ к слою LangGraph. В документации описывается, что это автоматы состояний LangGraph, которые сохраняют свой прогресс в форме чекпоинтов, могут самостоятельно корректировать свои действия и содержат узлы прерывания, позволяющие человеку вмешаться. Ключевой особенностью является возможность продолжения работы: когда длительный рабочий процесс приостанавливается в ожидании одобрения или сбивается на полпути, он должен продолжиться с последнего чекпоинта, а не начинаться заново с оплатой каждого вызова LLM. Наш обзор том, как LangGraph's InMemorySaver сохраняет чекпоинты, объясняет, что на самом деле сохраняется на каждом этапе.

Отчеты

GET  /api/reports/comprehensive
GET  /api/reports/{report_type}
POST /api/reports/generate-pdf
GET  /api/reports/download/{filename}
GET  /api/reports/domains
GET  /api/reports/domains/{domain}

Что генерирует каждый маршрут отчетов:

comprehensive report → generate full business report
specific report      → generate executive, marketing, financial, etc.
generate PDF         → convert report data into downloadable PDF
download report      → serve generated PDF/HTML
domain reports       → return modular reports by business domain

Генерация отчетов — это ключевая функция: отчеты для руководства, маркетинга, финансового отдела и общие отчеты в формате JSON, причем вывод в PDF осуществляется с помощью WeasyPrint. Именно это отличает данную систему от чат-ботов, поскольку конечным результатом является бизнес-документ, а не сообщение в чате.

Память

GET    /api/memory/graph
GET    /api/memory/stats
POST   /api/memory/export
DELETE /api/memory/clear

И вот что они возвращают:

memory/graph  → return graph nodes and edges for visualization
memory/stats  → return vector/graph memory statistics
memory/export → export stored memory and outputs
memory/clear  → clear memory stores

В документе README эти данные сгруппированы под путем /api/memory/* для экспорта графиков и статистики. С их помощью можно аудитировать накопленные агентами знания, отслеживать их выводы и видеть, сколько памяти используется каждым модулем хранения. Обратите внимание, что конечная точка обработки данных является разрушительной и требует таких же механизмов контроля доступа, как и любое другое административное действие.

Аналитика

GET /api/analytics/predictions
GET /api/enhanced/system-metrics
GET /api/communication/stats

Их назначение:

predictions          → analyze generated outputs and estimate success/revenue/market timing
system metrics       → return enhanced orchestrator metrics
communication stats  → return inter-agent communication analytics

За их работой стоят простые вспомогательные функции:

_analyze_project_success()
_analyze_revenue_trend()
_analyze_market_timing()

Эти инструменты анализируют результаты работы агентов и вычисляют показатели, важные для бизнеса, такие как вероятность успеха, направление роста доходов и рекомендуемое время действий. Это гистерические методы, основанные на сгенерированном тексте, поэтому их результаты следует рассматривать как ориентиры, а не как прогнозы.

Интеграции

/api/integrations/*

В репозитории перечислены HubSpot, Slack и Instagram Business API, каждый из которых выполняет определенную функцию:

HubSpot   → CRM workflows
Slack     → HITL approval notifications
Instagram → marketing automation with compliance checks

Основная идея заключается в том, что агенты должны передавать результаты в реальные бизнес-системы, а не просто генерировать контент, при этом все чувствительные данные должны проходить через системы проверки.

WebSockets и стриминг

WS  /ws/agent-updates
WS  /ws/agent-events
GET /api/stream/logs

Что передается в каждом потоке:

/ws/agent-updates → periodically sends agent status updates
/ws/agent-events  → streams queue/Redis events to frontend
/api/stream/logs  → streams recent logs via server-sent response

Для интерфейса с несколькими агентами такая видимость крайне важна. Операторам необходимо видеть, какой агент работает в данный момент, какая задача активна, есть ли ожидающее одобрение и где нарушился процесс работы.

Фронтенд на React

Клиентская часть построена на следующей технологической стеке:

React 18
Vite
React Router
Tailwind CSS
React Flow
Recharts

Согласно документации README, панель управления объединяет процесс адаптации с использованием чата, информацию о статусе агентов в реальном времени, визуальную карту выполнения задач и инструменты для проверки соответствия требованиям PRD. Её функции включают:

1. Capture the user’s project vision
2. Display agent execution status
3. Visualize task flow
4. Show pending approval requests
5. Display reports and analytics
6. Show memory/monitoring data
7. Connect to WebSocket streams
8. Communicate with FastAPI through api.js

Исходная структура интерфейса компактна:

frontend/
└── src/
    ├── App.jsx
    ├── pages/
    ├── components/
    └── services/api.js

App.jsx служит аутентифицированным интерфейсом, pages/ содержит визуалы для работы с процессами, аналитики и мониторинга, а components/ предоставляет базовые элементы: панели для дашборда, экраны утверждения, визуалы для проверки соответствия требованиям PRD и настройки интеграции. Каждый HTTP-запрос проходит через services/api.js, где одновременно реализуются механизмы повторных попыток и кэширования, что позволяет избежать включения сетевых аспектов в состав компонентов.

Полный цикл обработки

В совокупности основной путь обработки данных в системе выглядит следующим образом:

1. User submits business vision from React UI
2. Frontend sends request to FastAPI
3. FastAPI creates project/session
4. Cofounder Agent structures vision
5. Manager Agent converts vision into roadmap and assignments
6. Specialist agents execute assigned tasks
7. Results are stored in memory
8. HITL approval is requested where required
9. Reports are generated
10. Frontend displays logs, status, graph, reports, and outputs

Если отнести это к конкретным модулям и методам, тот же цикл будет выглядеть так:

React UI
   ↓ HTTP/WebSocket
FastAPI main.py
   ↓
AgentOrchestrator / EnhancedOrchestrator
   ↓
CofounderAgent.execute()
   ↓
ManagerAgent.execute()
   ↓
_execute_specialists()
   ↓
FinanceAgent / MarketingAgent / LegalAgent / MoneyAgent / SalesAgent
   ↓
MemoryManager + GraphMemory + VectorMemory
   ↓
ReportGenerator
   ↓
Dashboard + PDF/HTML/JSON Output

У каждого уровня есть своя задача: интерфейс обрабатывает взаимодействие с пользователем, координаторы управляют процессами, агенты выполняют действия, менеджеры памяти сохраняют контекст, а генератор отчетов формирует итоговый результат.

Почему оркестратор графов вместо цепочки

Рабочие процессы с несколькими агентами требуют большего, чем просто серии вызовов функций. Им необходимо:

- State transitions
- Conditional routing
- Checkpointing
- Retry behavior
- Human approval interruptions
- Recovery after failure
- Resume from previous state

В документации README машины состояний LangGraph называются слоем оркестрации именно из-за этих возможностей. Обычная цепочка запросов имеет линейную структуру:

A → B → C → Done

Бизнес-процесс разветвляется в зависимости от промежуточных результатов:

A → B
    ├── if finance confidence low → retry Finance
    ├── if legal risk high → ask human approval
    ├── if marketing ready → generate campaign
    └── if all complete → generate report

Низкий уровень уверенности в финансовой стороне приводит к повторной попытке, высокий юридический риск — к проверке человеком, а окончательный отчет генерируется только после завершения всех ветвей. Если это реализовывать с помощью жестко заданных последовательных вызовов, быстро возникает запутанная структура условий; граф с явными узлами, ребрами и контрольными точками позволяет сохранять порядок действий и возобновлять их выполнение.

Что сделано правильно в данной разработке

  • Четкое разделение обязанностей агентов: каждый агент отвечает за одну сферу бизнеса, что обеспечивает последовательность результатов и упрощает добавление новых ролей.
  • Оркестрация с упором на рабочий процесс: выполнение задач моделируется как рабочий процесс, а не как серия ответов на запросы.
  • Параллельная работа специалистов: функции финансов, маркетинга, юриспруденции, управления финансами и продаж выполняются одновременно там, где это возможно благодаря отсутствию зависимостей, что сокращает общее время выполнения задач.
  • Общая память: Neo4j, Qdrant, Redis и локальное хранилище вместе обеспечивают управление связями, семантическим поиском, очередями, кэшированием и резервными вариантами.
  • Безопасность с участием человека: механизмы одобрения позволяют использовать систему для принятия решений с реальными последствиями.
  • Наблюдаемость в реальном времени: WebSockets, логи, временные шкалы, панели управления и аналитика позволяют отслеживать действия агентов.
  • Структурированные отчеты: результатом является документ, который можно передать заинтересованной стороне, а не протокол чата.
  • Готовность к интеграции: поддержка HubSpot, Slack и Instagram показывает, что система предназначена для взаимодействия с реальными бизнес-инструментами.
  • Подготовка к использованию в производственных условиях

    Основы уже заложены: модульный бэкенд, специализированные агенты, абстракция памяти, процесс утверждения и интерфейс для наблюдения. Следующими очевидными шагами являются улучшение надежности, безопасности, мониторинга, оценки и контроля затрат:

    1. Add distributed tracing with OpenTelemetry
    2. Add LangSmith or custom LLM evaluation dashboards
    3. Add cost tracking per agent and per workflow
    4. Add stronger RBAC for users, agents, and approvals
    5. Add persistent workflow checkpoints in Postgres or Redis
    6. Add retry policies per agent type
    7. Add queue-based background execution with Celery/RQ/Arq
    8. Add structured output validation with Pydantic schemas
    9. Add agent-level unit tests and golden-output evaluation
    10. Add Docker production profiles and deployment manifests
    

    Два из этих моментов заслуживают особого внимания. Контроль затрат по агентам и по рабочим процессам важен, поскольку параллельная работа специалистов увеличивает количество вызовов больших языковых моделей, а затраты остаются незаметными до тех пор, пока их не измерят. Валидация структурированного вывода с использованием схем Pydantic важна, потому что каждый последующий этап — от записи в память до формирования отчетов и обновления данных в CRM — будет настолько надежным, насколько соответствует формату данных, возвращаемых агентом.

    Основные выводы

    • Рассматривайте слой оркестрации как продукт; большая языковая модель — это лишь один из компонентов внутри него.
    • Назначьте агента в стиле менеджера для контроля процесса декомпозиции, чтобы выводы специалистов оставались целостными.
    • Запускайте независимые агенты одновременно с установленными временными ограничениями для каждого из них и прямо обрабатывайте частичные сбои.
    • Предназначьте каждый хранилище памяти для одной задачи: графы — для отслеживания происхождения данных, векторы — для поиска информации, очереди — для координации действий.
  • Сделайте механизмы утверждения, контрольные точки и возможность наблюдения за работой системы неотъемлемой частью основного дизайна, а не добавлением позже.