langgraph-fundamentals

作者: langchain-ai

用於構建具狀態、多步驟代理工作流程的有向圖框架,提供精細控制。StateGraph 搭配型別狀態模式、用於累積列表/值的歸約器,以及返回部分狀態更新的節點。固定流程的靜態邊、分支的條件邊,以及結合狀態更新與動態路由的 Command。用於扇出並行處理至工作節點的 Send API,透過歸約器聚合結果。支援單次執行的 Invoke 與串流模式(值、更新...)。

npx skills add https://github.com/langchain-ai/langchain-skills --skill langgraph-fundamentals
LangGraph models agent workflows as **directed graphs**:
  • StateGraph: Main class for building stateful graphs
  • Nodes: Functions that perform work and update state
  • Edges: Define execution order (static or conditional)
  • START/END: Special nodes marking entry and exit points
  • State with Reducers: Control how state updates are merged

Graphs must be compile()d before execution.

Designing a LangGraph application

Follow these 5 steps when building a new graph:

  1. Map out discrete steps — sketch a flowchart of your workflow. Each step becomes a node.
  2. Identify what each step does — categorize nodes: LLM step, data step, action step, or user input step. For each, determine static context (prompt), dynamic context (from state), retry strategy, and desired outcome.
  3. Design your state — state is shared memory for all nodes. Store raw data, format prompts on-demand inside nodes.
  4. Build your nodes — implement each step as a function that takes state and returns partial updates.
  5. Wire it together — connect nodes with edges, add conditional routing, compile with a checkpointer if needed.
Use LangGraph WhenUse Alternatives When
Need fine-grained control over agent orchestrationQuick prototyping → LangChain agents
Building complex workflows with branching/loopsSimple stateless workflows → LangChain direct
Require human-in-the-loop, persistenceBatteries-included features → Deep Agents

State Management

NeedSolutionExample
Overwrite valueNo reducer (default)Simple fields like counters
Append to listReducer (operator.add / concat)Message history, logs
Custom logicCustom reducer functionComplex merging

Nodes

Node functions return partial state updates. Signatures for configuration and runtime access differ by language; use the applicable implementation reference.


Edges

NeedEdge TypeWhen to Use
Always go to same nodeadd_edge()Fixed, deterministic flow
Route based on stateadd_conditional_edges()Dynamic branching
Update state AND routeCommandCombine logic in single node
Fan-out to multiple nodesSendParallel processing with dynamic inputs

Command

Command combines state updates and routing in a single return value. Fields:

  • update: State updates to apply (like returning a dict from a node)
  • goto: Node name(s) to navigate to next
  • resume: Value to resume after interrupt() — see human-in-the-loop skill

Python: Use Command[Literal["node_a", "node_b"]] as the return type annotation to declare valid goto destinations.

TypeScript: Pass { ends: ["node_a", "node_b"] } as the third argument to addNode to declare valid goto destinations.

Warning: Command only adds dynamic edges — static edges defined with add_edge / addEdge still execute. If node_a returns Command(goto="node_c") and you also have graph.add_edge("node_a", "node_b"), both node_b and node_c will run.


Send API

Fan-out with Send: return [Send("worker", {...})] from a conditional edge to spawn parallel workers. Requires a reducer on the results field.


Running Graphs: Invoke and Stream

Call graph.invoke(input, config) to run a graph to completion and return the final state.

ModeWhat it StreamsUse Case
valuesFull state after each stepMonitor complete state
updatesState deltasTrack incremental updates
messagesLLM tokens + metadataChat UIs
customUser-defined dataProgress indicators

Error Handling

Match the error type to the right handler:

Error TypeWho FixesStrategyExample
Transient (network, rate limits)SystemRetryPolicy(max_attempts=3)add_node(..., retry_policy=...)
LLM-recoverable (tool failures)LLMToolNode(tools, handle_tool_errors=True)Error returned as ToolMessage
User-fixable (missing info)Humaninterrupt({"message": ...})Collect missing data (see HITL skill)
UnexpectedDeveloperLet bubble upraise

Core boundaries

  • Return partial state updates from nodes instead of mutating state directly.
  • Route loops through a named node; START is entry-only.
  • Define reducers for accumulated list fields; otherwise, the last write wins.
  • Account for static edges when using Command with goto, because both routes execute.

Implementation references

If writing, modifying, or debugging LangGraph code, determine the project's language from its existing files, then read the applicable reference before implementing:

Read both only when the task covers both languages. For conceptual questions that require no code, do not load either reference.

來自 langchain-ai 的更多技能

deepagents-thread-inspector
langchain-ai
檢查並解釋本地 Deep Agents Code SQLite 工作階段儲存庫中的對話。當 LangSmith 追蹤工具不可用時作為備用方案,用於…
deepagents-python-quickstart
langchain-ai
按照官方快速入門,在 Python 中搭建一個最小的本地 Deep Agent,使用提供者原生的網路搜尋而非 Tavily。當使用者想要……時使用。
deepagents-typescript-quickstart
langchain-ai
按照官方快速入門指南,以 TypeScript 搭建一個最小的本地 Deep Agent,使用供應商原生的網路搜尋而非 Tavily。當使用者……時使用
eval-engineering
langchain-ai
反覆檢查 agent 儲存庫與使用者提供的可選追蹤資料,訪談使用者,並逐一建立、執行及稽核 Harbor evals。用於……
LangChain RAG Pipeline
langchain-ai
在構建任何檢索增強生成(RAG)系統時,請調用此技能。涵蓋文檔加載器、遞迴字符文本分割器、嵌入(OpenAI)等。
LangChain Structured Output & HITL
langchain-ai
langchain-structured-output-&-hitl — 一個可安裝的 AI 代理技能,由 langchain-ai/langchain-skills 發布。
LangSmith Datasets
langchain-ai
當從追蹤建立評估資料集,或將資料集上傳至 LangSmith,或查詢資料集時,請調用此技能。涵蓋資料集類型(final_response、…)
langsmith-evaluator
langchain-ai
在為 LangSmith 建立評估管道時,請調用此技能。涵蓋三個核心組件:(1) 建立評估器 - LLM 作為評審、自訂程式碼;(2)…