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. Сообщество и учебные ресурсы
- Official docs: https://www.langchain.com/langgraph
- LangGraph Overview (Docs LangChain): https://docs.langchain.com/oss/python/langgraph/overview
- GitHub repository: https://github.com/langchain-ai/langgraph
- Academy course: https://academy.langchain.com/courses/intro-to-langgraph
- Awesome‑LangGraph index: https://github.com/von-development/awesome-LangGraph
- LangGraph‑JS: https://github.com/langchain-ai/langgraphjs
- LangGraph‑upstage: https://github.com/langchain-ai/langchain-upstage (PyPI package)
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 внутри узлов.
Источники
- LangGraph – официальный сайт: https://www.langchain.com/langgraph
- LangGraph Overview (Docs LangChain): https://docs.langchain.com/oss/python/langgraph/overview
- GitHub repository (core): https://github.com/langchain-ai/langgraph
- LangGraph‑upstage GitHub: https://github.com/langchain-ai/langchain-upstage
- PyPI page for langchain‑upstage: https://pypi.org/project/langchain-upstage/
- Awesome‑LangGraph: https://github.com/von-development/awesome-LangGraph
- LangGraph Academy: https://academy.langchain.com/courses/intro-to-langgraph
- Upstage API docs (Solar LLM): https://docs.upstage.ai/solar/
- LangGraph Cloud example: https://github.com/langchain-ai/langgraph-example
- LangGraph AutoGen integration: https://langchain-ai.github.io/langgraph/how-tos/autogen-integration-functional/
- LinkedIn post announcing Upstage‑LangChain package: https://www.linkedin.com/posts/upstageai_upstage-langchain-llm-activity-7190526418202591234-1BSU
- LangGraph‑JS: https://github.com/langchain-ai/langgraphjs
- LangGraph‑upstage PyPI docs: https://reference.langchain.com/python/integrations/langchain_upstage/
- Upstage official website: https://www.upstage.ai/
- LangChain agents docs: https://docs.langchain.com/oss/python/langchain/agents
- AutoGen docs: https://microsoft.github.io/autogen/