LangGraph

Фреймворк для оркестрации агентов, реализующий паттерн State Machine: агент описывается как граф из узлов (функции) и рёбер (переходы) поверх единого типизированного состояния. Это hub-заметка — отдельные концепции вынесены в atomic.

Суть

Главный тезис: агенты — это графы, а не цепочки. Линейная цепочка вход → LLM → tool → выход не умеет ветвиться, циклиться, прерываться и восстанавливаться — а агенту это нужно. LangGraph даёт три примитива, из которых собирается любая логика:

  • State — единое строго типизированное состояние, передаваемое между узлами (LangGraph State, правила обновления — LangGraph Reducers).
  • Node (узел) — Python-функция, принимающая state и возвращающая его частичное обновление.
  • Edge (ребро) — переход между узлами, обычный или условный (функция-маршрутизатор) (LangGraph Nodes and Edges).

Граф собирается через StateGraph(...) builder и переводится в исполняемый объект вызовом .compile().

Зачем это нужно

LangChain-цепочки — это API для прототипирования; для production нужны контроль потока, циклы, retry, воспроизводимость и human-in-the-loop. LangGraph закрывает именно это (подробно — LangGraph vs LangChain). Показательно: высокоуровневая create_agent() из LangChain сама написана на LangGraph.

Карта концепций (atomic)

Ядро State Machine:

  • LangGraph State — типизированное неизменяемое состояние, схема данных графа
  • LangGraph Reducers — как обновления состояния мержатся (Annotated[type, reducer], add_messages)
  • LangGraph Nodes and Edges — узлы, обычные/условные рёбра, builder, compile

Production-механизмы:

Практические паттерны (из ноутбуков курсов):

Учебная последовательность

State → Reducers → Nodes/Edges → (собрать минимальный LangGraph ReAct Loop) → Checkpointers → HITL → Time-Travel → Reliability → практические паттерны (Intent Router, MCP-as-Node).

Связано с

  • Agent vs Workflow — «граф vs цепочка» = «агент vs workflow»
  • ReAct — ReAct-цикл реализуется как граф; create_agent() написан на LangGraph
  • Agent Architecture — LangGraph как способ собрать агентный цикл
  • PydanticAI — другой фреймворк для агентов (типизация вывода vs оркестрация графа)

Открытые вопросы

  • LangGraph vs PydanticAI vs «голый» агентный цикл — критерий выбора под задачу
  • Когда multi-agent через граф, а когда через MCP/A2A-кооперацию (упомянуто в C6 как «следующий шаг»)