Lesson 2 / 29

The LangGraph Model: State, Nodes, Edges

Learn the three building blocks and what compiling does.

Shared state, small functions, explicit transitions

LangGraph is a library (from the LangChain team, usable without LangChain models) for building stateful, controllable agents as graphs. State is a typed structure (a TypedDict, dataclass or Pydantic model) that all nodes read and update. A node is a function that takes the state and returns a partial update. Edges connect nodes: normal edges (always go next), conditional edges (a function picks the next node) and the special START and END. You build a StateGraph, add nodes and edges, then compile() it into a runnable app that supports invoke, stream, checkpointing and interrupts. Because every transition is explicit, you can draw, test and debug the flow.

The pieces

A map of the vocabulary used in the rest of the course.

State          typed data shared by all nodes            {"messages": [...], "route": "..."}
Node           function(state) -> partial update          def classify(state): return {"route": "billing"}
Edge           fixed transition                           add_edge("a", "b")
Conditional    function(state) -> name of next node       add_conditional_edges("classify", pick)
START / END    entry and exit markers
compile()      validates the graph, returns a runnable app (invoke / stream / checkpoint)

Draw the graph before coding it

Sketch nodes and arrows on paper first. If the picture is hard to explain, the code will be harder.

Quick check: What does a node return?

  • A partial update to the state
  • A new graph
  • A trained model
  • Nothing ever
Answer

A partial update to the state — Nodes return only the keys they change; LangGraph merges them into the state.