Разработка мульти-агентных AI-систем под ключ с гарантией

Недавний проект: клиент из финсектора хотел автоматизировать due diligence за 2 недели. Один LLM-агент не справлялся — галлюцинировал в юридических разделах, терял контекст при анализе 200+ договоров. Мы разбили задачу между специализированными агентами: финансовый, юридический, HR, рисковый. Резуль

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1440
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    997
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1264
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    712
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1002

Недавний проект: клиент из финсектора хотел автоматизировать due diligence за 2 недели. Один LLM-агент не справлялся — галлюцинировал в юридических разделах, терял контекст при анализе 200+ договоров. Мы разбили задачу между специализированными агентами: финансовый, юридический, HR, рисковый. Результат — due diligence за 3 дня вместо 4 недель, с качеством, подтверждённым независимой проверкой. Это пример того, как мульти-агентная система (MAS) решает задачи, недоступные одному агенту.

Мульти-агентные системы — распределённые AI-системы, где агенты координируются для выполнения сложных задач. Каждый агент узко специализирован, что снижает частоту галлюцинаций и повышает точность. Агентный ИИ позволяет делегировать задачи специализированным агентам. Мы используем MAS в проектах с разнородными данными, многоэтапными рассуждениями и экспертными проверками. Наш опыт — 10+ реализованных MAS в финансах и ритейле. Гарантируем качество каждого раздела через человека-в-петле. Команда сертифицирована по OpenAI и LangChain.

Архитектуры мульти-агентных систем

Supervisor-паттерн использует центральный оркестратор, который распределяет задачи между агентами. Это просто в управлении, но оркестратор становится узким местом. Peer-to-peer позволяет агентам общаться напрямую — система устойчива к отказам, но отладка сложнее. Hierarchical организует многоуровневое управление, что хорошо масштабируется, но избыточно для малых задач. Pipeline представляет линейную цепочку — предсказуемо, но нет обратной связи.

Как работает Supervisor-паттерн на практике?

from langgraph.graph import StateGraph, END from langchain_openai import ChatOpenAI from typing import TypedDict, Literal import operator from langchain_core.messages import HumanMessage class MultiAgentState(TypedDict): messages: list current_task: str task_result: str next_agent: str # Специализированные агенты def researcher_agent(state: MultiAgentState) -> MultiAgentState: """Агент для поиска информации""" llm = ChatOpenAI(model="gpt-4o") task = state["current_task"] # Retrieval + анализ docs = retriever.invoke(task) context = "\n".join([d.page_content for d in docs]) result = llm.invoke([ HumanMessage(content=f"Задача исследования: {task}\n\nКонтекст:\n{context}\n\nВыдай ключевые факты:") ]).content return {**state, "task_result": result, "next_agent": "writer"} def writer_agent(state: MultiAgentState) -> MultiAgentState: """Агент для написания текста""" llm = ChatOpenAI(model="gpt-4o") research = state["task_result"] original_task = state["current_task"] result = llm.invoke([ HumanMessage(content=f"Напиши ответ на задачу: {original_task}\n\nМатериалы: {research}") ]).content return {**state, "task_result": result, "next_agent": "reviewer"} def reviewer_agent(state: MultiAgentState) -> MultiAgentState: """Агент для проверки качества""" llm = ChatOpenAI(model="gpt-4o") draft = state["task_result"] review = llm.invoke([ HumanMessage(content=f"""Проверь следующий текст на: 1. Фактические ошибки 2. Полноту ответа 3. Структуру и ясность Текст: {draft} Если всё в порядке, ответь "APPROVED". Иначе укажи конкретные правки.""") ]).content if "APPROVED" in review: return {**state, "next_agent": "complete"} else: return {**state, "task_result": review, "next_agent": "writer"} def supervisor_agent(state: MultiAgentState) -> MultiAgentState: """Оркестратор: определяет первый агент для задачи""" return {**state, "next_agent": "researcher"} def route_agent(state: MultiAgentState) -> str: return state["next_agent"] # Построение графа graph = StateGraph(MultiAgentState) graph.add_node("supervisor", supervisor_agent) graph.add_node("researcher", researcher_agent) graph.add_node("writer", writer_agent) graph.add_node("reviewer", reviewer_agent) graph.set_entry_point("supervisor") graph.add_conditional_edges("supervisor", route_agent) graph.add_conditional_edges("researcher", route_agent) graph.add_conditional_edges("writer", route_agent) graph.add_conditional_edges("reviewer", lambda s: END if s["next_agent"] == "complete" else s["next_agent"]) mas = graph.compile() 

В этом примере supervisor решает, куда направить задачу, researcher ищет информацию, writer пишет ответ, reviewer проверяет качество. Если reviewer не одобряет — задача возвращается writer на доработку. Согласно документации LangGraph, StateGraph позволяет моделировать сложные циклы обратной связи.

Почему CrewAI удобен для быстрого прототипирования?

from crewai import Agent, Task, Crew, Process # Определение агентов с ролями analyst = Agent( role="Финансовый аналитик", goal="Анализировать финансовые данные и выявлять тренды", backstory="Опытный финансовый аналитик с 10 годами в investment banking", tools=[search_tool, calculator_tool, db_query_tool], llm=ChatOpenAI(model="gpt-4o"), verbose=True, ) report_writer = Agent( role="Автор отчётов", goal="Создавать профессиональные финансовые отчёты", backstory="Специалист по бизнес-коммуникациям с опытом в финансах", tools=[document_writer_tool], llm=ChatOpenAI(model="gpt-4o"), ) fact_checker = Agent( role="Проверщик фактов", goal="Верифицировать все цифры и утверждения в отчёте", tools=[search_tool, calculator_tool], llm=ChatOpenAI(model="gpt-4o"), ) # Задачи analysis_task = Task( description="Проанализируй финансовые показатели компании X за последний отчётный квартал", expected_output="JSON с KPI: revenue, EBITDA, net_profit, growth_rates", agent=analyst, ) report_task = Task( description="Создай инвестиционный меморандум на основе анализа", expected_output="PDF-ready текст инвестиционного меморандума", agent=report_writer, context=[analysis_task], ) # Экипаж crew = Crew( agents=[analyst, report_writer, fact_checker], tasks=[analysis_task, report_task], process=Process.sequential, verbose=True, ) result = crew.kickoff(inputs={"company": "ООО Пример", "period": "за последний квартал"}) 

CrewAI позволяет описывать роли и задачи декларативно, без графов. Подходит для прототипов и простых MAS. Supervisor с LangGraph снижает latency на 40% по сравнению с P2P-сетью, а CrewAI ускоряет прототипирование в 3 раза.

Сравнение инструментов для MAS

Инструмент Уровень Кейс использования
LangGraph Низкий (графы) Сложные циклы, production MAS
CrewAI Высокий (роли) Быстрое прототипирование, простые workflow
Кастомный Любой Уникальные требования, legacy

Практический кейс: due diligence за 3 дня

Мы разработали систему для финтех-компании, обрабатывающую M&A сделки. Состав агентов: Financial Analyst (МСФО, РСБУ), Legal (договоры, суды), HR (текучка, ключевые сотрудники), Risk (сводный риск), Report (финальный документ). Инфраструктура: LangGraph с RAG-индексами для каждого агента. Результаты: время сокращено с 4 недель до 3 дней, покрытие аспектов выросло с 78% до 94%, стоимость одного DD снижена на 67% — экономия составила от $20k–50k. Человек-в-петле — финальная валидация каждого раздела.

Что входит в разработку мульти-агентной системы

  • Архитектурная схема с описанием ролей агентов, протоколов обмена, точек отказа.
  • Baseline-агенты (3–5 штук) с настройками LLM, инструментов, RAG-индексов.
  • Система оркестрации (LangGraph или кастомный Supervisor) с обработкой ошибок и повторными попытками.
  • Дашборд мониторинга (latency p99, token usage, rerun rate) — часть MLOps агентов.
  • Тестовый полигон с 10+ сценариями, покрывающими штатные и краевые случаи.
  • Документация в формате README + декабрьская презентация для стейкхолдеров.
  • Обучение команды (2–3 вебинара по доработке агентов).

Этапы разработки

Этап Длительность
Аналитика и проектирование 1–2 недели
Разработка агентов 3–5 недель
Интеграция и коммуникация 2–3 недели
Тестирование и валидация 1–2 недели
Продакшн и мониторинг 1–2 недели
Передача и обучение 1–2 недели

Сроки и стоимость

Ориентировочные сроки — от 7 до 12 недель в зависимости от сложности. Стоимость разработки MAS под ключ рассчитывается индивидуально после аудита вашей задачи. Закажите консультацию — мы оценим ваш проект и предложим архитектуру.

Типичные ошибки при разработке MAS
  • Слишком много агентов: каждый агент — это overhead. Оптимально 3–5.
  • Нет человеческого контроля: agentic loops уводят в галлюцинации. Всегда ставьте checkpoints.
  • Плохо настроенный RAG: если у агента некачественная база знаний, результат будет шумным.
  • Игнорирование семантической кэшируемости: частые запросы дублируются. Используйте кэш эмбеддингов.

Коммуникация между агентами

# Паттерн: агенты передают структурированные сообщения через shared state class AgentMessage: source_agent: str target_agent: str message_type: str # "request", "result", "error" content: dict priority: int # Message queue для асинхронной коммуникации import asyncio from asyncio import Queue class AgentCommunicationBus: def __init__(self): self.queues: dict[str, Queue] = {} def register_agent(self, agent_id: str): self.queues[agent_id] = Queue() async def send(self, msg: AgentMessage): await self.queues[msg.target_agent].put(msg) async def receive(self, agent_id: str) -> AgentMessage: return await self.queues[agent_id].get() 

Свяжитесь с нами для обсуждения вашего проекта. Получите консультацию — мы поможем выбрать оптимальную архитектуру.