Фреймворки: LangGraph, LangChain, CrewAI, AutoGen

Писать цикл агента вручную полезно для понимания, но в продакшне берут фреймворк. Разбираем главные и их назначение.

Агентный фреймворк — библиотека, которая берёт на себя рутину: цикл, вызов инструментов, парсинг, память, оркестрацию, — чтобы вы описывали логику агента, а не инфраструктуру.

Что даёт фреймворк

В разделах 2–5 мы руками писали диспетчер, парсер, цикл, память, маршрутизацию. Фреймворк всё это уже реализовал и протестировал. Сверху он добавляет интеграции с моделями, готовые инструменты, логирование и обработку ошибок. Вы пишете что агент делает, а не как крутится цикл.

Главные фреймворки

ФреймворкПодходСилён в
LangChain agentsцепочки и агенты, много готовых инструментовбыстрый старт, экосистема
LangGraphагент как граф состоянийсложные циклы, явное состояние, контроль
CrewAIкоманда агентов с ролямимультиагентность «из коробки»
AutoGenагенты, общающиеся диалогомбеседы агентов, кооперация

LangGraph: агент как граф

LangGraph моделирует агента как граф: узлы — шаги (вызов модели, инструмента), рёбра — переходы, плюс явное общее состояние. Это удобно для сложных циклов с ветвлениями, рефлексией и человеком-в-цикле, потому что весь поток виден и управляем. Код ниже — иллюстрация идеи (нельзя запустить в браузере: нужен пакет и доступ к модели), поэтому он помечен как text.

# Псевдо-LangGraph: узлы и переходы (идея, не запускается в браузере)
graph = StateGraph(AgentState)
graph.add_node("think", call_model)        # узел: спросить модель
graph.add_node("act", call_tool)           # узел: выполнить инструмент

# условный переход: если модель просит инструмент -> act, иначе конец
graph.add_conditional_edges("think", route_decision, {
    "tool": "act",
    "done": END,
})
graph.add_edge("act", "think")             # после инструмента — снова думать
app = graph.compile()

Заметьте: это ровно наш цикл ReAct из раздела 3 — «думать → действовать → думать», — только описанный как граф, с явным состоянием и переходами.

CrewAI: команда ролей

CrewAI заточен под мультиагентность из раздела 5: вы описываете агентов с ролями и задачами, фреймворк организует их совместную работу.

# Псевдо-CrewAI: агенты-роли (идея)
researcher = Agent(role="Исследователь", goal="найти факты", tools=[search])
writer     = Agent(role="Писатель",      goal="оформить отчёт")
crew = Crew(agents=[researcher, writer], tasks=[task1, task2])
result = crew.kickoff()

Брать фреймворк или писать руками

  • Фреймворк — когда нужен продакшн: меньше своего кода, готовые интеграции, логирование, поддержка. Минус — свои абстракции и «магия», которую надо изучить.
  • Вручную — для обучения, прототипов и нестандартной логики, где фреймворк мешает. Вы уже умеете: цикл, диспетчер, парсер — это и есть «руками».

Главное — понимать механику под капотом. Тогда любой фреймворк читается как «обёртка над тем, что вы уже знаете», а не как магия.

Итог

  • Фреймворки берут рутину (цикл, инструменты, память, оркестрацию) на себя — вы пишете логику.
  • LangChain — экосистема и быстрый старт; LangGraph — граф состояний для сложных циклов; CrewAI/AutoGen — мультиагентность.
  • Понимание ручной механики делает любой фреймворк прозрачным; для продакшна обычно берут готовый.
Проверьте себя
1. Что в первую очередь даёт агентный фреймворк по сравнению с ручным кодом?
AБолее умную модель
BГотовую реализацию рутины: цикл, вызов инструментов, парсинг, память, оркестрацию
CБесплатные вызовы LLM
DГарантию отсутствия ошибок
2. Чем выделяется LangGraph среди агентных фреймворков?
AОн не использует LLM
BОн моделирует агента как граф состояний с узлами-шагами и явными переходами
CОн работает только с одним агентом
DОн запускается прямо в браузере
3. Когда разумно писать цикл агента вручную, а не брать фреймворк?
AВсегда — фреймворки бесполезны
BДля обучения, прототипов и нестандартной логики, где абстракции фреймворка мешают
CТолько в продакшне под нагрузкой
DКогда нужна мультиагентность
Поддержать проект