Agent frameworks — это библиотеки и рантаймы, упрощающие сборку «агентов» на базе LLM: от простого вызова функций до сложных многоагентных систем с памятью, инструментами и планированием. Ниже — практичный обзор подходов, типовых ролей и критериев выбора для продовых решений.
Связанные страницы: 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 по уровням доверия.
- Отказ по источнику: если в данных обнаружены императивы — репорт и отказ.
- Режим «честного незнания»: лучше «не найдено в источниках», чем галлюцинация.
Пошаговый плейбук выбора
- Сформулируйте KPI: качество (faithfulness/EM), p95, $/ответ, доля успешных инструментов.
- Нарисуйте контуры: источники данных, список инструментов, политика безопасности.
- Выберите архетип (tool-first/RAG/многоагентность/смешанный).
- Возьмите минимально достаточный фреймворк. Если задача — RAG, не тяните многоагентный рантайм «про запас».
- Встроите evals и наблюдаемость с первого дня.
- Зафиксируйте лимиты: max циклов, max инструментов за шаг, таймауты.
- Проведите A/B с одинаковыми датасетами и измеримой целью.
Типовые сценарии и рекомендации
Корпоративная справка/поиск
*Болтли*: индексация, метаданные, гибридный поиск, кросс-энкодер переранжирования. *Выбор*: LlamaIndex/Haystack + «чистый» tool use для бизнес-операций. *Линки:* RAG: хаб.
Интеграции и автоматизация
*Болтли*: строгие функции, идемпотентность, аудит. *Выбор*: Semantic Kernel или «чистые функции» с вашим планировщиком. *Сигнал качества*: минимум «свободы генерации», максимум валидации аргументов.
Аналитика/исследование с критикой
*Болтли*: много шагов, агрегаты, проверка. *Выбор*: AutoGen/CrewAI с лимитами итераций и чек-листами критика. *Риск*: стоимость/латентность — планируйте бюджеты.
Повышение качества без смены архитектуры
*Болтли*: нестабильные ответы, высокие затраты. *Выбор*: DSPy — оптимизация промптов/маршрутов под метрики; нужен golden-сет.
Анти-паттерны (и чем заменить)
- «Сделаем 10 агентов — оно само решит». → Начинайте с одного tool-first агента и явного плана.
- «Логики нет — пусть договорятся». → Нужен детерминированный планировщик и лимиты.
- «Вся память — в истории чата». → Используйте внешнее состояние и компактные резюме, избегайте раздувания окна.
- «Генерация аргументов в виде свободного текста». → Только JSONSchema и валидация.
- «Нет evals — есть впечатления». → Введите метрики и регресс-наборы.
Мини-чек-лист внедрения
- Определите «Definition of Done» для задач агента.
- Опишите инструменты как строгие функции с ограничениями и тестами.
- Запустите RAG только там, где есть качественные источники и ретривер.
- Включите логирование намерений/вызовов/ошибок и алерты на «зацикливание».
- Для многоагентности — лимит итераций и «стоп-условия».
- Evals каждую неделю: качество, безопасность, p95, стоимость.
FAQ
Нужен ли мне вообще фреймворк?
Если задача проста (несколько инструментов, 1–2 шага) — возможно, хватит «чистых функций» и собственного планировщика. Фреймворк оправдан, когда растёт число интеграций/ролей/источников.
Многоагентность всегда лучше?
Нет. Она полезна для сложных исследований, но повышает стоимость и непредсказуемость. Сначала добейтесь стабильности одиночного агента.
Чем RAG-агент отличается от «поиска с чат-ботом»?
RAG-агент умеет планировать извлечение (маршрутизировать источники, допрашивать по шагам), а не просто приклеивать абзацы к ответу. Ключ — хороший ретривер и переранжировка.
Можно ли «лечить» галлюцинации настройками декодера?
Частично. Но корень — слабый ретрив и отсутствие политики faithfulness. Работайте с данными/ретривером и проверяйте ссылки на источники.
