Agent frameworks — сопоставление подходов к построению ИИ-агентов

Agent frameworks — это библиотеки и рантаймы, упрощающие сборку «агентов» на базе LLM: от простого вызова функций до сложных многоагентных систем с памятью, инструментами и планированием. Ниже — практичный обзор подходов, типовых ролей и критериев выбора для продовых решений.

Agent frameworks — сопоставление подходов к построению ИИ-агентов

Связанные страницы: RAG: хаб, Retriever, Model serving.

Что такое «агент» в практике

Агент — это не «магический интеллект», а композиция:

  • LLM (или несколько) с ролью и ограничениями;
  • инструменты (tool use): функции, БД, внешние API;
  • память и контекст (история, профиль, краткие резюме);
  • планировщик (loop/рефлексия/критик) и политики безопасности.

Разные фреймворки фокусируются на разных частях этой композиции: одни — на RAG, другие — на многоагентных сценариях, третьи — на строгих контрактах инструментов.

Архетипы подходов

Архетип Краткое описание Когда уместен
Оркестрация цепочек Компонентные графы: парсинг, ретрив, генерация, пост-обработка Гайды/пайплайны с контролируемым потоком
RAG-агенты Глубокая интеграция с индексами/ретриверами Поиск по документам, справки, аналитика
Tool-first (функции) Чёткие JSON-контракты инструментов, LLM как планировщик Интеграции с ИТ-системами, низкий риск
Многоагентность Несколько ролей/LLM с диалогом и критикой Исследовательские задачи, сложные пайплайны
Декларативная оптимизация Обучение/автотюнинг промптов/цепочек (DSPy-подход) Производственные улучшения качества/стоимости

Карта экосистемы (коротко)

  • LangChain (Py/TS): универсальная оркестрация, ретрив, инструменты, «графы» задач.
  • LlamaIndex (Py/TS): сильный RAG-стек, индексация/ретрив, маршрутизация, графовые RAG.
  • Haystack (Py): документ-поиск и RAG, классическая ML-/поисковая дисциплина.
  • Semantic Kernel (C#/Py/JS): «плагины»/функции, планы, интеграция с корпоративным стеком.
  • AutoGen (Py): многоагентные шаблоны «разработчик ↔ критик ↔ исп.», беседы между агентами.
  • CrewAI (Py): роли/задачи/инструменты, сценарные «экипажи».
  • DSPy (Py): декларативные графы и *compiler-style* оптимизация промптов/подзадач.
  • Чистые функции (tool calling): без «тяжёлого» фреймворка — строгий JSON-контракт и внешнее состояние.

Сводная таблица сравнения

Фреймворк Сильные стороны Ограничения/риски Типовые кейсы
LangChain Большая экосистема блоков; графы задач; множество коннекторов Лёгко соблазниться «комбайном»; важно контролировать сложность Конвейеры с RAG, парсинг, цепочки инструментов
LlamaIndex Индексы/ретрив; графовый RAG; адаптеры к БД/хранилищам Менее удобен для «многоагентности» из коробки Корпоративные базы знаний, аналитика
Haystack Строгие поисковые паттерны; метрики, классический IR Меньше «агентных» абстракций QA по документам, гибридный поиск
Semantic Kernel Планирование, «скиллы/плагины», корпоративные политики Порог входа, больше бенефитов в экосистеме MS Интеграции, строгий tool use, workflow
AutoGen Диалоговые многоагентные схемы, критик/рефлексия Латентность/стоимость ↑; нужен контроль циклов Исследование вариантов, код-ассист, решения «в несколько шагов»
CrewAI Роли, распределение задач, простая декларативность Меньше низкоуровневого контроля, есть оверхед Малые «команды» агентов с инструментами
DSPy Автотюнинг промптов/параметров, декларативные графы Требует набора задач/метрик; не про UI/инструменты Повышение качества/стоимости на стабильных пайплайнах
Чистые функции Прозрачность, безопасность, лёгкий деплой Требует больше кода вокруг; меньше «магии» Прод-интеграции, автоматика, строгие контракты

Как выбрать: критерии и «сигналы»

  • Задача. Если ядро — поиск по документам, приоритет RAG-стека (LlamaIndex/Haystack). Если нужны инструменты и планы, смотрите Semantic Kernel или «чистые функции».
  • Контроль над сложностью. Чем выше требования к p95/стоимости, тем меньше «магии»: выдержанный tool-first, явные JSONSchema, явный роутинг.
  • Наблюдаемость и evals. Выбирайте там, где удобно вставить метрики и логи (см. Model serving).
  • Безопасность. Наличие «гардрейлов», лёгкая вставка политики источников и проверки инструментов.
  • Команда. Что быстрее освоит ваш стек (Py/TS/C#), какие коннекторы нужны «вчера».

Архитектурные паттерны агентных систем

1) Tool-first (видимость и контроль)

LLM генерирует намерения, а не «любой текст». Инструменты объявлены JSON-схемами, валидируются и логируются. Состояние — вне LLM. *Плюсы:* безопасность, предсказуемость p95, чёткая ответственность. *Минусы:* меньше «автономной магии», больше явного кода.

2) RAG-агент с маршрутизацией источников

Запрос → маршрутизатор → подбор ретривера/индекса → контекст → ответ с цитатами. Ключ к качеству: правильный ретривер и переранжирование (см. retriever).

3) Многоагентная критика/рефлексия

«Исполнитель» предлагает решение, «критик» проверяет по чек-листу/источникам, «редактор» форматирует. *Плюсы:* качество на сложных задачах. *Минусы:* стоимость и латентность; нужен лимит итераций и эвристики остановки.

4) Декларативная оптимизация (DSPy-стиль)

Определяем цель/метрику (например, faithfulness или EM/F1) и даём компилятору улучшать промпты/параметры и маршруты. Работает, когда есть golden-набор.

Память и состояние агента

  • Краткосрочная: история диалога (резюме/кластеризация, чтобы не распухало окно контекста).
  • Долгосрочная: профиль пользователя, векторные заметки, события.
  • Оперативная: «план шага», результаты инструментов, кэш промежуточных артефактов.

Важно: храните состояние внешне (БД/ключ-значение), а не «надеясь» на память LLM.

Метрики и evals для агентов

Мерьте по уровням, иначе «улучшения» будут мнимыми (см. model evaluation):

  • Качество: EM/F1, faithfulness/citation-precision для RAG, «решён/не решён».
  • Безопасность: устойчивость к инъекциям и корректность инструментов.
  • Производительность: p50/p95/p99, tokens/s, cost/answer.
  • Поведение: число циклов/вызовов инструментов, доля «пустых» заходов.

Безопасность: минимизируем поверхность риска

  • Данные ≠ инструкции: источники RAG помечаются как данные; любые директивы внутри игнорируются.
  • Инструменты: JSONSchema, белые списки, dry-run, квоты, журналирование.
  • Границы контекста: изолируйте кэши префиксов и KV по уровням доверия.
  • Отказ по источнику: если в данных обнаружены императивы — репорт и отказ.
  • Режим «честного незнания»: лучше «не найдено в источниках», чем галлюцинация.

Пошаговый плейбук выбора

  1. Сформулируйте KPI: качество (faithfulness/EM), p95, $/ответ, доля успешных инструментов.
  2. Нарисуйте контуры: источники данных, список инструментов, политика безопасности.
  3. Выберите архетип (tool-first/RAG/многоагентность/смешанный).
  4. Возьмите минимально достаточный фреймворк. Если задача — RAG, не тяните многоагентный рантайм «про запас».
  5. Встроите evals и наблюдаемость с первого дня.
  6. Зафиксируйте лимиты: max циклов, max инструментов за шаг, таймауты.
  7. Проведите A/B с одинаковыми датасетами и измеримой целью.

Типовые сценарии и рекомендации

Корпоративная справка/поиск

*Болтли*: индексация, метаданные, гибридный поиск, кросс-энкодер переранжирования. *Выбор*: LlamaIndex/Haystack + «чистый» tool use для бизнес-операций. *Линки:* RAG: хаб.

Интеграции и автоматизация

*Болтли*: строгие функции, идемпотентность, аудит. *Выбор*: Semantic Kernel или «чистые функции» с вашим планировщиком. *Сигнал качества*: минимум «свободы генерации», максимум валидации аргументов.

Аналитика/исследование с критикой

*Болтли*: много шагов, агрегаты, проверка. *Выбор*: AutoGen/CrewAI с лимитами итераций и чек-листами критика. *Риск*: стоимость/латентность — планируйте бюджеты.

Повышение качества без смены архитектуры

*Болтли*: нестабильные ответы, высокие затраты. *Выбор*: DSPy — оптимизация промптов/маршрутов под метрики; нужен golden-сет.

Анти-паттерны (и чем заменить)

  • «Сделаем 10 агентов — оно само решит». → Начинайте с одного tool-first агента и явного плана.
  • «Логики нет — пусть договорятся». → Нужен детерминированный планировщик и лимиты.
  • «Вся память — в истории чата». → Используйте внешнее состояние и компактные резюме, избегайте раздувания окна.
  • «Генерация аргументов в виде свободного текста». → Только JSONSchema и валидация.
  • «Нет evals — есть впечатления». → Введите метрики и регресс-наборы.

Мини-чек-лист внедрения

  1. Определите «Definition of Done» для задач агента.
  2. Опишите инструменты как строгие функции с ограничениями и тестами.
  3. Запустите RAG только там, где есть качественные источники и ретривер.
  4. Включите логирование намерений/вызовов/ошибок и алерты на «зацикливание».
  5. Для многоагентности — лимит итераций и «стоп-условия».
  6. Evals каждую неделю: качество, безопасность, p95, стоимость.

FAQ

Нужен ли мне вообще фреймворк?

Если задача проста (несколько инструментов, 1–2 шага) — возможно, хватит «чистых функций» и собственного планировщика. Фреймворк оправдан, когда растёт число интеграций/ролей/источников.

Многоагентность всегда лучше?

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

Чем RAG-агент отличается от «поиска с чат-ботом»?

RAG-агент умеет планировать извлечение (маршрутизировать источники, допрашивать по шагам), а не просто приклеивать абзацы к ответу. Ключ — хороший ретривер и переранжировка.

Можно ли «лечить» галлюцинации настройками декодера?

Частично. Но корень — слабый ретрив и отсутствие политики faithfulness. Работайте с данными/ретривером и проверяйте ссылки на источники.

См. также

Task Runner