← Назад к курсу

LangGraph: подробное описание

1. Общее представление

LangGraph — это открытая библиотека от LangChain, предназначенная для построения stateful, multi‑actor и tool‑using AI‑агентов, где каждый шаг (узел) может представлять вызов LLM, вызов внешнего API, обработку данных, сохранение результата и т. д.

Ключевые возможности:

  • Durable execution – автоматическое сохранение состояния между запросами и возможность продолжать выполнение после перезапуска приложения.
  • Streaming – токен‑по‑токен вывод модели и промежуточных действий.
  • Human‑in‑the‑loop – прерывание исполнения, ручное изменение состояния, вставка пользовательского ввода.
  • Memory & state‑management – подключение внешних хранилищ (Redis, Neo4j, Postgres, LangChain DB) для длительного хранения контекста.
  • Subgraphs – вложенные графы, позволяющие ре‑использовать уже построенные модули в более крупных workflow‑ах.
  • Time‑travel debugging – просмотр истории состояния и шагов, «rewind» к любому моменту.

2. Архитектура LangGraph

2.1 Узлы (Nodes) и рёбра (Edges)

Граф задаётся как диграф (Directed Acyclic Graph), где каждый узел — функция (callback), а рёбра — guard‑функции, определяющие, когда перейти к следующему узлу.

Пример (docs.langchain.com):

from langgraph import Graph, State

def step1(state: State):
    return {"step1": state["input"], "next": "step2"}

def step2(state: State):
    return {"step2": state["step1"], "next": "final"}

graph = Graph()
graph.add_node("step1", step1)
graph.add_node("step2", step2)
graph.set_start("step1")
graph.set_end("final")
graph.add_edge("step1", "step2")

2.2 Состояние (State)

State — объект, передаваемый от узла к узлу и сохраняемый в persistence‑layer (Redis, Postgres, Neo4j, DurableTask). Пример типа:

from typing import TypedDict, Optional

class State(TypedDict):
    input: str
    step1: Optional[dict] = None
    step2: Optional[dict] = None
    result: Optional[str] = None

2.3 Длительное выполнение (Durable Execution)

После завершения запроса LangGraph сохраняет текущий узел и состояние. При следующем запросе исполнение возобновляется от сохранённого места.

2.4 Streaming

graph.run(..., stream=True) позволяет получать промежуточные выводы и логи в реальном времени.

for partial in graph.stream({"input": "Кратко о LangGraph"}):
    print(partial["result"]["partial_output"])

2.5 Human‑in‑the‑loop

Interrupt‑handler позволяет вставлять пользовательский ввод.

graph.add_edge("human_input", "step1")
graph.set_interrupt_handler(lambda state: state["human_input"]["data"])

2.6 Time‑travel debugging

LangSmith / LangGraph Studio сохраняют историю состояний и позволяют перемещаться назад.

2.7 Persist‑backends

Backend Описание Применение
Redis Fast key‑value, поддерживает checkpointing Наиболее часто используемый для LangGraph Cloud
Postgres Transaction‑oriented, хранит версии состояния Большие datasets, запросы к SQL‑таблицам
Neo4j Графовая DB, естественно подходит для LangGraph Приложения, требующие анализа связей
DurableTask (Azure) Платформа для длительных задач Управление долгоживущими процессорами

3. Функциональные компоненты и их применение

Компонент Описание Примеры использования
Durable Execution Persist checkpoints, auto‑resume after failures Data pipelines, nightly jobs
Streaming Токен‑по‑токен вывод модели и промежуточных шагов Real‑time “thoughts” показ, debugging
Human‑in‑the‑loop UI/CLI прерывание, ручное изменение состояния Оценка результатов, исправление ошибок
Memory Подключение внешних памяти (Redis, Neo4j) Поддержание истории диалогов, запись фактов
Subgraphs Вложенные графы, re‑use across workflows Модуль «question‑answering» в разных проектах
Observability (LangSmith) Логи, метрики, trace‑лог, UI для отладки Производительность, A/B‑тестирование
LangGraph Cloud HTTP‑microservice, built‑in scaling, observability Production deployment без ручного инфраструктурного управления
LangGraph CLI / Docker Локальный сервер, утилита langgraph serve Тестирование и прототипирование
LangGraph‑upstage Интеграция Solar LLM (Upstage) ChatUpstage, OpenAPI

4. Интеграция LangGraph с Upstage

4.1 Upstage AI – кратко

Upstage — корейская компания, выпускающая модели Solar Pro (~10 B параметров) и Solar Open (open‑source, 107 B параметров). Сильные стороны: высокое качество генерации, RAG, перевод.

4.2 Пакет langchain-upstage

  • ChatUpstage – клиент Solar Chat (диалоговый режим).
  • OpenAPI – вызов REST‑API Solar Open.
  • UpstageProvider – прокси‑объект, передающий запросы к модели.

Установка:

pip install -U langchain-upstage

Необходимо установить переменную окружения UPSTAGE_API_KEY (API‑ключ из Upstage Dashboard).

import os
os.environ["UPSTAGE_API_KEY"] = "YOUR_API_KEY"

from langchain_upstage import ChatUpstage
chat = ChatUpstage(model="solar-pro-2", temperature=0.7)

4.3 Пример в LangGraph

from langgraph import Graph, State, interrupt
from langchain_upstage import ChatUpstage

class State(TypedDict):
    input: str
    result: Optional[str] = None
    next: str = "step2"

def call_solar(state: State):
    chat = ChatUpstage(model="solar-pro-2")
    answer = chat(state["input"])
    return {"result": answer.content, "next": "final"}

def final(state: State):
    return {"final": state["result"]}

graph = Graph()
graph.add_node("step1", call_solar)
graph.add_node("step2", final)
graph.set_start("step1")
graph.set_end("step2")
graph.add_edge("step1", "step2")

# Streaming example
for partial in graph.stream({"input": "Кратко о LangGraph"}):
    print(partial["result"]["partial_output"])

4.4 Плюсы интеграции

  • Speed — Solar LLM показывает высокое качество генерации и перевода.
  • Cost‑effectiveness — upstage‑pay‑as‑you‑go часто дешевле крупных провайдеров.
  • Кросс‑платформенность — Solar может использоваться в любом persistence‑layer (Redis, Postgres, Neo4j).
  • Совместимость — langchain-upstage соответствует стандартам LangChain, код переиспользуется без изменения.

5. Deployment

5.1 LangGraph Cloud

  • langgraph serve упаковывает граф в HTTP‑microservice.
  • Автоматически использует Redis для checkpoint‑ов и scaling‑уровня.
  • Встроенный UI в LangSmith Studio (trace‑лог, latency metrics).

5.2 LangGraph CLI / Docker

  • Утилита langgraph запускает локальный сервер для прототипирования.
  • Docker‑образ (upstageai/langgraph-upstage) запускает граф с Solar‑LLM внутри контейнера.

5.3 Масштабируемость и Persist‑backends

Backend Описание Применение
Redis Fast key‑value, checkpointing LangGraph Cloud, short‑term stateful workflow
Postgres Transaction‑oriented, хранит версии Большие datasets, SQL‑запросы
Neo4j Графовая DB, естественное подходящее для LangGraph Встроенный анализ связей
DurableTask (Azure) Платформа для длительных задач Управление долгоживущими процессами

6. Сообщество и учебные ресурсы


7. Практические сценарии

Сценарий Описание Реализация в LangGraph
Agentic RAG Агент выбирает источники, запрашивает их, генерирует ответ. Узлы: Retrieval → LLM(Solar) → Synthesis → Output.
Multi‑agent workflow Два агента взаимодействуют (один анализирует запрос, второй генерирует код). Subgraphs: agentA → agentB с guard‑переходами.
Computer Use Agent (CUA) Автоматизация взаимодействия с GUI/CLI. Интеграция @langchain/langgraph-cua + Solar.
Customizable UI Веб‑интерфейс с HTML/React для отображения шагов. LangGraph Platform + LangSmith UI.
Long‑running data pipeline Агент постоянно проверяет статус заданий, обрабатывает новые данные. Durable execution + Neo4j persistence.

8. Сравнение с альтернативами

Фреймворк Основные отличия
LangChain agents Высок‑уровневые агенты (ReAct, Function‑calling). LangGraph даёт более детальный контроль над графом.
AutoGen Много‑агентный чат‑бот, но без встроенных streaming и checkpoint‑ов; LangGraph включает их «из коробки».
LangGraph Cloud HTTP‑microservice, авто‑scaling, observability, поддержка LLM‑backends.
AWS Step Functions Универсальный workflow‑организатор, но без прямой поддержки LLM. LangGraph заточен под LLM‑workflow.

9. Выводы и рекомендации

  • Быстрый прототип — используйте LangChain agents + Solar LLM.
  • Сложные stateful‑workflow‑ы — LangGraph + Solar LLM: persistance, streaming, interrupts.
  • Production‑deployment — LangGraph Cloud + Redis (или Neo4j) — автоматическое HTTP‑сервис, scaling, observability.
  • Для анализа и отладки — LangSmith + LangGraph Studio (trace‑лог, time‑travel).
  • Интеграция — установите langchain-upstage, задайте UPSTAGE_API_KEY, используйте ChatUpstage внутри узлов.

Источники

  1. LangGraph – официальный сайт: https://www.langchain.com/langgraph
  2. LangGraph Overview (Docs LangChain): https://docs.langchain.com/oss/python/langgraph/overview
  3. GitHub repository (core): https://github.com/langchain-ai/langgraph
  4. LangGraph‑upstage GitHub: https://github.com/langchain-ai/langchain-upstage
  5. PyPI page for langchain‑upstage: https://pypi.org/project/langchain-upstage/
  6. Awesome‑LangGraph: https://github.com/von-development/awesome-LangGraph
  7. LangGraph Academy: https://academy.langchain.com/courses/intro-to-langgraph
  8. Upstage API docs (Solar LLM): https://docs.upstage.ai/solar/
  9. LangGraph Cloud example: https://github.com/langchain-ai/langgraph-example
  10. LangGraph AutoGen integration: https://langchain-ai.github.io/langgraph/how-tos/autogen-integration-functional/
  11. LinkedIn post announcing Upstage‑LangChain package: https://www.linkedin.com/posts/upstageai_upstage-langchain-llm-activity-7190526418202591234-1BSU
  12. LangGraph‑JS: https://github.com/langchain-ai/langgraphjs
  13. LangGraph‑upstage PyPI docs: https://reference.langchain.com/python/integrations/langchain_upstage/
  14. Upstage official website: https://www.upstage.ai/
  15. LangChain agents docs: https://docs.langchain.com/oss/python/langchain/agents
  16. AutoGen docs: https://microsoft.github.io/autogen/