7. Рабочие процессы и агенты
Критический выбор
Во многих реальных проектах выбор между:
- Простым скриптом
- Детерминированным рабочим процессом
- Традиционным чатботом
- Системой RAG (Retrieval-Augmented Generation)
- Полноценным автономным агентом
Может быть разницей между элегантным решением и переусложненным, трудно поддерживаемым беспорядком.
Четыре ключевых фактора
Чтобы сделать выбор яснее, рассмотрите:
- Вариабельность ваших входных данных
- Сложность требуемого рассуждения
- Ограничения производительности или соответствия
- Бремя постоянного обслуживания
Когда НЕ использовать foundation модель?
Используйте простой код, если:
-
Входные данные полностью предсказуемы и каждый возможный выход может быть описан заранее
- Пример: парсинг лог-файла с фиксированным форматом "YYYY-MM-DD HH:MM:SS—message" → регулярное выражение в Python или Go
-
Требуется задержка на уровне миллисекунд
- Пример: встроенная система, которая должна реагировать на данные датчиков в реальном времени
- Нет времени для вызова API языковой модели
-
Регулируемые домены требуют полностью детерминистической, проверяемой логики принятия решений
- Примеры: медицинские устройства, авиация, определенные финансовые системы
- Черные ящики нейронных моделей не удовлетворят требованиям сертификации
Вывод: Если входные данные детерминистичны, требуются строгие потребности в производительности или объяснимости, или домен проблемы статичен → простой код почти всегда предпочтительнее foundation модели.
Детерминированные рабочие процессы
Используйте детерминированный рабочий процесс, если:
- Логика может быть выражена как конечный набор шагов или ветвей
- Вы заранее знаете, где может потребоваться человеческое вмешательство или дополнительная обработка ошибок
Пример: Импорт счетов от небольшого набора поставщиков, каждый счет приходит в одном из трех известных форматов (CSV, JSON, PDF):
- Маршрутизация каждого формата к соответствующему парсеру
- Проверка несоответствий
- Остановка для человеческого обзора, если поля не проходят простую сверку
Инструменты: Airflow, AWS Step Functions, хорошо структурированные наборы скриптов
Когда использовать: Когда вы можете перечислить все ветви решений заранее и вам нужен жесткий, проверяемый контроль над каждой ветвью.
Традиционные чатботы или RAG системы
Используйте RAG, если:
- Ваша основная потребность — позволить пользователям задавать вопросы о базе знаний
- Примеры: руководство по продукту, юридический архив, корпоративные вики
Как работает RAG:
- Встраивает документы в векторное хранилище
- Извлекает релевантные отрывки в ответ на запрос
- Генерирует связные, контекстно-зависимые ответы
Пример: Внутренняя IT-служба поддержки использует RAG для ответа "Как сбросить мои VPN-учетные данные?" путем получения последнего руководства по устранению неполадок и суммирования соответствующих шагов.
Ограничения RAG:
- Не принимают независимых решений о последующих действиях (например, создание тикета или планирование обратного звонка)
- Просто предоставляют информацию
Когда использовать: Когда задача в основном состоит в ответах на вопросы по структурированному или неструктурированному контенту, с ограниченной потребностью в внешних вызовах API или оркестрации решений.
Стоимость обслуживания: Ниже, чем у агентов — основной накладной расход в поддержании актуальности встраиваний документов и уточнении промптов.
Автономные агенты
Используйте автономного агента, если:
- Ни простой код, ни жесткие рабочие процессы, ни RAG не достаточны
- Входные данные неструктурированы, новы или сильно изменчивы
- Требуется динамическое многошаговое планирование
- Требуется непрерывное обучение на основе обратной связи
Пример 1: Служба поддержки клиентов
- Получает свободные электронные письма с проблемами от "батарея моего ноутбука раздувается и может взорваться" до "меня продолжают выставлять счета за услуги, которые я не заказывал"
- Правило-основанный рабочий процесс или RAG-система FAQ развалились бы под таким открытым разнообразием
- Агент может:
- Разобрать намерение
- Извлечь релевантные сущности
- Проконсультироваться с базой знаний
- Составить соответствующий ответ
- Эскалировать к человеку при необходимости
- Все это без предварительного указания каждой возможной ветви
Пример 2: Управление цепочкой поставок
- Агент, который принимает данные о запасах в реальном времени, сроки поставки поставщиков и прогнозы продаж, может динамически перепланировать графики отгрузок
- Детерминированный рабочий процесс потребовал бы постоянных ручных обновлений для обработки новых исключений
Пример 3: Параллельные подзадачи
- Агент операций безопасности одновременно:
- Запрашивает API разведывательной информации об угрозах
- Сканирует сетевую телеметрию
- Выполняет анализ песочницы подозрительных двоичных файлов
Преимущества агентов:
- Работают асинхронно
- Переприоритизируют на основе данных в реальном времени
- Избегают хрупкой природы "один шаг за раз" рабочих процессов или RAG систем
Стоимость: Чтобы оправдать более высокие вычислительные и затраты на обслуживание запуска foundation модели, вам нужен этот уровень:
- Контекстного рассуждения
- Параллельной оркестрации задач
- Постоянного самосовершенствования
Сравнительная таблица
| Характеристика | Традиционный код | Рабочий процесс | Автономный агент |
|---|---|---|---|
| Структура входных данных | Полностью предсказуемые схемы | В основном предсказуемые с конечными ветвями | Высоко неструктурированные или новые входные данные |
| Объяснимость | Полная прозрачность; легко проверяемо | Явный аудит ветвь за ветвью | Компоненты черного ящика, требующие дополнительных инструментов |
| Задержка | Сверхнизкая задержка | Умеренная задержка | Высокая задержка |
| Адаптируемость и обучение | Нет | Ограниченная | Высокая (обучение на основе обратной связи) |
Вопросы для принятия решения
Перед выбором спросите:
- Мои входные данные неструктурированы или непредсказуемы?
- Нужно ли мне многошаговое планирование, которое адаптируется к промежуточным результатам?
- Достаточно ли системы извлечения документов для информационных потребностей моих пользователей, или система должна решать и действовать автономно?
- Хочу ли я, чтобы эта система улучшалась со временем с минимальным человеческим вмешательством?
- Могу ли я терпеть задержку и бремя обслуживания foundation модели?
Краткие рекомендации
- Фиксированное, детерминистическое преобразование → напишите простой код
- Несколько известных ветвей + явные контрольные точки обработки ошибок → используйте детерминированный рабочий процесс
- В основном ответы на вопросы на естественном языке по корпусу → выберите традиционный чатбот или архитектуру RAG
- Высокая вариабельность, открытое рассуждение, динамические потребности в планировании или постоянные требования к обучению → инвестируйте в автономного агента