AI-инжиниринг
Фреймворки агентов: LangGraph, CrewAI, AutoGen, Claude Agent SDK
Цели урока
- Понять что абстрагируют фреймворки агентов и когда они нужны
- Освоить LangGraph: графовая оркестрация, state management, persistence
- Познакомиться с CrewAI, LlamaIndex и DSPy - что каждый решает
- Научиться использовать Vercel AI SDK: streaming, tool calling, React integration
- Уметь выбрать фреймворк под задачу - и знать когда лучше naked SDK
Предварительные знания
- Agent loop, ReAct, планирование
- Tool calling: JSON Schema, execution cycle
От LangChain до второго поколения фреймворков агентов
24 октября 2022 Harrison Chase выложил первую версию LangChain как Python-пакет (тогда он работал в Robust Intelligence). Идея появилась на внутреннем хакатоне, и LangChain быстро стал самым популярным способом склеивать промпты, цепочки и tools вокруг LLM. 30 марта 2023 Toran Bruce Richards из Significant Gravitas опубликовал AutoGPT, один из первых проектов, показавших автономный цикл агента поверх GPT-4. AutoGPT набрал десятки тысяч звёзд за считанные дни, но на практике зацикливался и терял контекст, и это обнажило разрыв между демо и production. Ответом стало второе поколение. В начале 2024 команда LangChain выпустила LangGraph, где агент описывается как явный граф из узлов и рёбер с управляемым состоянием. Параллельно João Moura собрал CrewAI: первая версия легла на GitHub в конце 2023, пакет появился на PyPI в декабре 2023, а официальный запуск состоялся в январе 2024. CrewAI принёс role-based подход, где команда агентов с ролями делит задачу между собой.
LangChain - самый популярный и самый ненавидимый фреймворк в AI. 90K GitHub stars. И 50K жалоб на абстракции поверх абстракций. Знать его нужно - но не чтобы копировать. AutoGPT набрал 150K звёзд за месяц в 2023 - и 90% пользователей бросили его через неделю: зацикливался, галлюцинировал инструменты, терял контекст. Второе поколение - LangGraph, CrewAI, Vercel AI SDK - решает эти проблемы по-разному. Но одинаково правильный выбор зависит от задачи, а не от количества звёзд на GitHub.
- Replit Agent - IDE с AI, построен на LangGraph: coding + terminal + deploy оркестрация как явный граф с ветвлением
- Jasper AI - content platform, CrewAI-подобная архитектура: researcher -> writer -> editor с разными LLM на каждом этапе
- v0.dev (Vercel) - AI-генератор UI, построен на Vercel AI SDK: streaming React-компонентов прямо в браузер
- Claude Code (Anthropic) - использует Claude Agent SDK для автономной работы с кодовыми базами через MCP
- Cursor - naked Anthropic SDK + собственная RAG-система, без фреймворков: 50K tokens context, свой chunking
Зачем фреймворки: что они абстрагируют
В предыдущем уроке agent loop реализован с нуля - ~100 строк для базовой версии. Но это только start. В production нужны ещё: управление состоянием, персистентность (что если сервер перезагрузился посреди задачи?), streaming, human-in-the-loop (одобрение опасных действий), трейсинг. Ещё 500-1000 строк boilerplate, одинаковых для каждого проекта.
Фреймворки абстрагируют этот повторяющийся код. Как Express.js абстрагирует HTTP-сервер, а TypeORM - SQL, так LangGraph и Vercel AI SDK абстрагируют agent loop, memory management и tool orchestration. Вопрос не "нужен ли фреймворк" - вопрос "какой и когда".
| Задача | Без фреймворка | С фреймворком |
|---|---|---|
| Agent loop | while + if/else вручную | Декларативный граф или конфиг |
| State management | Массив messages + ручное сжатие | Встроенный state с persistence |
| Tool execution | try/catch + Promise.all вручную | Автоматическая оркестрация с retry |
| Streaming | SSE + ручная сборка chunks | stream() из коробки |
| Human-in-the-loop | Кастомный UI + WebSocket | Встроенные interrupt points |
| Observability | console.log | Tracing, LangSmith, OpenTelemetry |
Каждый фреймворк добавляет абстракцию (learning curve), зависимость (vendor lock-in) и ограничения. Для простого бота с 2-3 tools собственный agent loop в 50 строк прозрачнее и легче поддерживается, чем фреймворк с 50 страницами документации.
- **LangGraph** (LangChain) - графовая оркестрация, максимальная гибкость, production-ready
- **CrewAI** - role-based агенты, простой API для multi-agent сценариев
- **Vercel AI SDK** - streaming-first, React интеграция, идеален для web-приложений
- **Claude Agent SDK** (Anthropic) - нативная поддержка Claude, MCP-интеграция
- **AutoGen** (Microsoft) - multi-agent conversations, research-grade
Для построения агента нужен фреймворк - иначе придётся изобретать велосипед
Для простых случаев naked OpenAI SDK + 50 строк кода бьёт LangChain по всем параметрам: читаемость, отладка, vendor lock-in
Фреймворк оправдан когда задача достаточно сложна - persistence, ветвление, multi-agent. Telegram-бот с тремя командами, Slack-помощник с поиском по документам, скрипт для обработки тикетов - всё это реализуется в 50-100 строк на чистом SDK. LangChain LCEL, LangGraph, CrewAI добавляют слой абстракций, который нужен только когда задача этого стоит. Знать их нужно - но не чтобы копировать на каждый проект.
LangGraph: графовая оркестрация агентов
**LangGraph** - фреймворк от LangChain для построения агентов как **направленных графов**. Каждый шаг агента - node (узел), переходы между шагами - edges (рёбра). Граф определяет: какие шаги возможны, в каком порядке, при каких условиях. TypeScript SDK есть - подходит для Node.js бекендов.
LangChain - самый популярный и самый ненавидимый фреймворк в AI. 90K GitHub stars. И 50K жалоб на абстракции поверх абстракций. LangGraph - другой продукт той же команды: без magic chains, без implicit state. Граф явный, переходы явные, state явный. Именно это делает его пригодным для production.
Главное преимущество LangGraph - state с **persistence**. Можно сохранить state в Redis или PostgreSQL и продолжить выполнение после перезагрузки сервера. Это критично для long-running задач: code agent может работать минуты, research agent - часы. Без persistence потеря прогресса при любом сбое.
LangGraph идеален для сложных агентов с ветвлением, параллельными ветками и persistence. Но для простого ReAct-агента это overhead: 30 строк LangGraph vs 20 строк чистого кода. Выбирать LangGraph когда нужны: conditional routing, state persistence, human-in-the-loop.
В LangGraph agent loop реализуется как:
CrewAI и другие: role-based агенты, DSPy, LlamaIndex
**CrewAI** подходит к агентам с другой стороны: вместо графа - **команда** (crew) из агентов с ролями. Один исследует, другой пишет, третий проверяет. Задачи распределяются между агентами, результат одного - вход для следующего. Там, где LangGraph думает топологиями, CrewAI думает командами.
**LlamaIndex** - другой популярный фреймворк, но с другим фокусом. Не на агентах как таковых, а на **data ingestion и RAG**. Если задача - построить агента поверх корпоративных документов, LlamaIndex даёт готовые data connectors (PDF, Notion, Google Drive, SQL), chunking стратегии и query pipelines. Agents в LlamaIndex - это надстройка над RAG, не основная абстракция.
**DSPy** (Stanford, 2023) - нечто принципиально иное. Не фреймворк для оркестрации - а фреймворк для **оптимизации промптов**. Вместо того чтобы писать промпты вручную, описывается сигнатура (что на входе, что на выходе) и критерий качества. DSPy сам оптимизирует промпты через few-shot примеры и gradient-like search. Cursor использует похожие подходы для автоматической настройки контекста под задачу.
| Фреймворк | Фокус | Когда брать |
|---|---|---|
| LangGraph | Граф оркестрации, state persistence | Сложные агенты с ветвлением и long-running задачами |
| CrewAI | Role-based команды агентов | Content pipelines: исследование -> написание -> редактура |
| LlamaIndex | RAG + data connectors | Агент поверх корпоративных документов |
| DSPy | Оптимизация промптов | Когда качество промпта критично и нужна автоматизация |
| Vercel AI SDK | Streaming, React, web | Web-приложения с AI-чатом |
| Naked SDK | Полный контроль | Простые агенты, Telegram-боты, скрипты |
CrewAI использует концепцию **backstory** - описание "личности" агента, которое влияет на стиль работы. Детальный backstory повышает качество результата на 15-20% по сравнению с простым описанием роли.
В CrewAI задача editTask с context: [writeTask] означает:
Vercel AI SDK: streaming, tool calling, React интеграция
**Vercel AI SDK** - фреймворк, заточенный под **web-приложения**. Streaming из коробки, встроенный tool calling с Zod-валидацией, seamless интеграция с React/Next.js. Notion AI, v0.dev, большинство AI-фич в SaaS-продуктах 2024-2025 - построены именно на нём или на аналогах.
Ключевая фишка - параметр **maxSteps**. SDK автоматически создаёт agent loop: вызывает LLM -> если есть tool calls, выполняет tools -> вызывает LLM снова -> и так до maxSteps. Не нужно писать while-цикл вручную. Один параметр превращает простой запрос в агента.
Vercel AI SDK - лучший выбор для web-приложений с AI. Streaming, React hooks, provider-agnostic API - всё из коробки. Но для сложных multi-agent сценариев с ветвлением и persistence лучше подходит LangGraph.
Параметр maxSteps: 5 в Vercel AI SDK означает:
Критерии выбора: когда какой фреймворк
Выбор фреймворка - не вопрос "какой лучше", а "какой подходит для задачи". Ответ зависит от: сложности agent logic, нужен ли streaming, web или backend, один агент или несколько, требования к persistence и observability. И отдельным вопросом - нужен ли фреймворк вообще.
| Критерий | Vercel AI SDK | LangGraph | CrewAI | Свой код |
|---|---|---|---|---|
| Сложность agent logic | Простая-средняя | Любая | Средняя | Простая |
| Streaming | ★★★★★ | ★★★☆☆ | ★★☆☆☆ | ★★☆☆☆ |
| React интеграция | ★★★★★ | ★★☆☆☆ | ★☆☆☆☆ | ★☆☆☆☆ |
| Multi-agent | ★★☆☆☆ | ★★★★★ | ★★★★★ | ★★★☆☆ |
| Persistence (state) | ★★☆☆☆ | ★★★★★ | ★★★☆☆ | ★☆☆☆☆ |
| TypeScript support | ★★★★★ | ★★★★☆ | ★★☆☆☆ | ★★★★★ |
| Learning curve | Низкая | Высокая | Средняя | Нулевая |
| Vendor lock-in | Низкий | Средний (LangChain) | Средний | Нулевой |
Фреймворки развиваются быстро: каждые 2-3 месяца появляются новые или существенно обновляются. Главный навык - не знание конкретного API, а понимание **паттернов**: agent loop, state management, tool orchestration. Паттерны переносимы между фреймворками.
- **E-commerce бот** с поиском товаров и оформлением заказов -> Vercel AI SDK (streaming UI, простой tool calling)
- **Code assistant** с git, файловой системой и CI/CD -> LangGraph (сложная логика, persistence для long-running задач)
- **Content pipeline** (исследование -> написание -> редактура) -> CrewAI (роли, делегирование, последовательные задачи)
- **Telegram-бот** с 3 командами -> Свой код (минимальный overhead, полный контроль)
Нужно построить AI-чат для web-приложения на Next.js: streaming ответов, 4 tools, переключение между OpenAI и Anthropic. Какой фреймворк оптимален?
Для построения агента нужен фреймворк - иначе придётся изобретать велосипед
Для простых случаев naked OpenAI SDK + 50 строк кода читаемее, надёжнее и отлаживается быстрее, чем LangChain
Telegram-бот, Slack-помощник с поиском по документам, скрипт обработки тикетов - всё это 50-100 строк на чистом SDK. Фреймворк оправдан когда задача достаточно сложна: persistence state через перезагрузки, conditional branching, human-in-the-loop паузы, multi-agent coordination. Если этого нет - фреймворк добавляет только learning curve, версионный ад и vendor lock-in.
Итоги
- Фреймворки абстрагируют boilerplate: agent loop, state, persistence, streaming, tool orchestration - но добавляют зависимость и learning curve
- LangGraph - граф из nodes/edges, максимальная гибкость, state persistence через checkpointer: для long-running агентов с ветвлением
- CrewAI - role-based агенты с backstory, задачи с зависимостями (context): для content pipelines и командной работы агентов
- LlamaIndex - RAG + data connectors как основа, агенты как надстройка: для корпоративных knowledge bases
- DSPy - оптимизация промптов как программирование: для автоматического тюнинга качества без ручного prompt engineering
- Vercel AI SDK - streaming-first, maxSteps для автоматического agent loop, React hooks: для web-приложений
- Naked SDK + 50 строк - для простых случаев всегда быстрее, понятнее и надёжнее фреймворка
Вопросы для размышления
- Есть ли в текущем или прошлом проекте агент, который был написан на фреймворке там, где хватило бы 50 строк? Или наоборот - написан вручную там, где persistence избавил бы от боли?
- LangChain критикуют за abstractions on top of abstractions. Почему тогда у него 90K звёзд и он остаётся самым популярным? Что он даёт несмотря на критику?
- DSPy оптимизирует промпты автоматически. Значит ли это, что prompt engineering как навык становится менее ценным - или наоборот?
Что дальше
Фреймворки позволяют быстро построить одного агента. Но самые мощные системы используют несколько специализированных агентов, работающих вместе - от supervisor pattern до peer-to-peer debate.
- Multi-Agent Systems — Несколько агентов с разными ролями: supervisor, researcher, coder - оркестрация и коммуникация
- Agent Fundamentals — Базовые паттерны агентов: ReAct, planning, memory - основа для работы с фреймворками
- Streaming Deep Dive — Продвинутые паттерны streaming: backpressure, cancellation, structured streaming
Связанные уроки
- aie-17-agent-fundamentals — Фреймворки кодируют базовые паттерны агентов
- aie-19-multi-agent — Фреймворки делают мультиагентную оркестрацию практичной
- aie-20-langchain-llamaindex — LangGraph связан с более широкой экосистемой LangChain
- aie-21-orchestration-patterns — Фреймворки напрямую реализуют паттерны оркестрации
- sd-10-microservices — Фреймворки агентов похожи на слои оркестрации сервисов
- ml-01-intro