Узнайте, как построить мультиагентную систему AI с Human-in-the-Loop проверкой на Python, CrewAI и Docker. Практический гайд с кодом.
Все говорят об автономных AI-агентах. Дайте агенту доступ в интернет, подключите к LLM — и он сможет исследовать темы, писать отчёты, анализировать бизнес и выполнять задачи почти без участия человека. Звучит впечатляюще — пока вы не запустите агента в полностью автономном режиме. На практике AI-агенты могут галлюцинировать факты, собирать нерелевантную информацию, неправильно понимать поисковый запрос, тратить дорогие API-токены и уверенно выдавать неточные отчёты. Для прототипов это может быть приемлемо, но для production-систем — нет. В этой статье я покажу, как построить мультиагентную AI-систему для исследований, которая намеренно делает паузу перед анализом, позволяя человеку проверить собранные данные, прежде чем рабочий процесс продолжится.
Одно из первых архитектурных решений — отказаться от создания всего в одном промпте. Может ли GPT исследовать, анализировать и писать за один запрос? Безусловно. Стоит ли так делать? Вероятно, нет. Большие промпты сложно отлаживать, улучшать, тестировать, переиспользовать и масштабировать. Вместо этого я разделил обязанности между независимыми агентами:
Такое разделение следует принципу единственной ответственности (Single Responsibility Principle), делая каждый компонент проще для независимой оптимизации.
Пользователь
│
▼
Агент-исследователь
│
▼
Человеческая проверка (HITL)
│
Утвердить / Редактировать / Отклонить
│
▼
Агент-аналитик
│
▼
Агент-писатель
│
▼
Отчёт в MarkdownВ отличие от многих AI-воркфлоу, здесь есть намеренная пауза между исследованием и анализом. Эта пауза стала самой важной функцией всего проекта.
Большинство демо автономных AI предполагают, что первый агент всегда выдаёт надёжный результат. Я намеренно оспорил это предположение. Вместо того чтобы передавать результаты исследования напрямую аналитику, я настроил CrewAI с флагом human_input=True. Когда выполнение достигает этой задачи:
Это небольшое изменение кардинально улучшает качество отчётов. Вместо того чтобы просить LLM исправить ошибки другой LLM, рабочий процесс позволяет человеку-рецензенту перехватить проблемы до того, как они распространятся на последующие агенты. Такой подход зеркалирует процессы утверждения, распространённые в корпоративном ПО.
Один из главных уроков этого проекта: создание AI-систем включает гораздо больше, чем просто промпт-инжиниринг. Несколько инфраструктурных решений значительно повысили надёжность.
Контейнеризация приложения обеспечила согласованность окружения на разных машинах. Интересной задачей стала поддержка интерактивного пользовательского ввода внутри Docker-контейнера. Поскольку рабочий процесс приостанавливается для одобрения человеком, стандартное выполнение в контейнере не подходило. Решение потребовало включить stdin_open: true и tty: true в Docker Compose, чтобы оставалась возможность взаимодействия с терминалом. Без этих флагов этап Human-in-the-Loop внутри контейнера бы не сработал.
Чтобы поддерживать репозиторий в production-ready состоянии, каждый push автоматически запускает: установку зависимостей, линтинг с flake8 и проверку кода. Несмотря на простоту, непрерывная интеграция гарантирует, что базовые проверки качества выполняются до слияния изменений. Это также демонстрирует важный инженерный принцип: автоматизация должна проверять код задолго до развёртывания.
Запуск нескольких агентов означает, что каждая задача потребляет API-токены. В процессе разработки я экспериментировал с разными моделями OpenAI. Для исследовательских рабочих процессов переход на GPT-4o Mini значительно снизил затраты, сохранив приемлемое качество для большинства задач. Этот опыт подтвердил важный урок: выбор самой дорогой модели — не всегда лучшее инженерное решение. Баланс качества, задержки и стоимости часто ценнее, чем максимизация «сырого» интеллекта.
Проект не обошёлся без препятствий. Некоторые из наиболее интересных инженерных проблем включали:
Каждая из этих задач превратила проект из простой AI-демонстрации в реалистичный production-воркфлоу.
Если я продолжу развивать проект, я бы добавил:
Эти дополнения приблизили бы проект к enterprise-ready AI-платформе.
Создание этого проекта изменило моё представление об AI-системах. Самый ценный урок — не в том, как оркестрировать несколько агентов. Он в том, что надёжность достигается инженерией, а не только интеллектом. Production AI-системы требуют: валидации, наблюдаемости, автоматизации, тестирования, оптимизации затрат и человеческого контроля. Мощные языковые модели — лишь часть решения. Хорошая программная архитектура превращает их в надёжные системы.
Ажиотаж вокруг автономных AI-агентов вполне заслужен. Но одной автономности недостаточно. Системы, которым доверяют бизнесы, будут те, что балансируют автоматизацию с подотчётностью. Этот проект — моё исследование этой идеи: сочетание специализированных AI-агентов с Human-in-the-Loop проверкой для получения более надёжных исследований, следуя production-ориентированным инженерным практикам. Если вам интересен AI Engineering, MLOps или мультиагентные системы, я буду рад услышать ваши мысли. Полный исходный код доступен на GitHub, вклады и обратная связь всегда приветствуются.
Прямо сейчас: откройте репозиторий проекта, разверните систему локально с помощью Docker, запустите исследование на интересующую вас тему и пройдите через этап Human-in-the-Loop проверки. Вы увидите, как ручная валидация улучшает качество результатов. Затем попробуйте изменить промпты агентов или модель на более дешёвую, чтобы оценить влияние на стоимость и качество.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →