LangGraph v1 + LangChain v1 (Python): delta-only notes for writing valid v1 code
0) Version + Python floor
- •Assume Python 3.10+ (LangGraph v1 drops 3.9).
- •Upgrade baseline:
- •
pip install -U langgraph langchain-core
- •
1) LangGraph Graph API is stable (mostly unchanged)
- •Graph API imports remain:
- •
from langgraph.graph import START, END, StateGraph
- •
2) LangGraph Functional API exists (v1 docs-first path)
- •Entrypoints are defined via:
- •
from langgraph.func import entrypoint
- •
- •Entrypoint function must accept one positional input argument (use a dict if multiple inputs are needed).
- •Entrypoints can request injectable params by name + type annotation:
- •
previous,store,writer,config
- •
- •Common v1 import paths shown in docs/examples:
- •
from langgraph.store.base import BaseStore - •
from langgraph.store.memory import InMemoryStore - •
from langgraph.checkpoint.memory import InMemorySaver
- •
3) Checkpointing / persistence packages and imports
- •In-memory checkpointer:
- •
from langgraph.checkpoint.memory import InMemorySaver
- •
- •SQLite/Postgres checkpointers are separate installables:
- •
langgraph-checkpoint-sqlite(SqliteSaver / AsyncSqliteSaver) - •
langgraph-checkpoint-postgres(PostgresSaver / AsyncPostgresSaver)
- •
- •(If using custom serialization) serde lives under:
- •
langgraph.checkpoint.serde.*
- •
4) LangGraph v1 deprecations (replace these)
LangGraph v1 is backwards compatible overall, but deprecates specific agent/runtime helpers:
4.1) MessageGraph (deprecated) → StateGraph + messages key
- •Replace
MessageGraphusage withStateGraphand a state that contains amessageskey.
4.2) ValidationNode (deprecated)
- •If you were using
langgraph.prebuilt.ValidationNode, prefer LangChain v1create_agenttool validation + middleware error handling (see section 5).
4.3) Agent prebuilt + agent state moved out of LangGraph
- •Deprecated in LangGraph v1:
- •
langgraph.prebuilt.create_react_agent - •
langgraph.prebuilt.AgentStateand pydantic variants - •LangGraph interrupt TypedDicts (HumanInterruptConfig / ActionRequest / HumanInterrupt)
- •
- •Replacements live in LangChain v1:
- •
from langchain.agents import create_agent - •
from langchain.agents import AgentState - •interrupt types:
from langchain.agents.interrupt import HumanInterruptConfig, ActionRequest, HumanInterrupt
- •
5) LangChain v1 agent API (built on LangGraph)
If you’re building an “agent loop” via prebuilts, v1 expects LangChain’s API:
5.1) create_react_agent → create_agent
- •Replace:
- •
from langgraph.prebuilt import create_react_agent
- •
- •With:
- •
from langchain.agents import create_agent
- •
5.2) prompt → system_prompt (string)
- •
system_prompt="..."(string), notSystemMessage.
5.3) Hooks → middleware
- •
pre_model_hook/post_model_hookpatterns move to middleware (before_model/after_model).
5.4) Tools: pass a list, not a ToolNode
- •
create_agent(..., tools=[...]) - •Do not wrap tools in
ToolNode(...)forcreate_agent.
5.5) State schemas: TypedDict-only
- •
create_agent(..., state_schema=SomeTypedDict) - •No pydantic/dataclass state schemas.
5.6) Streaming node name
- •When streaming agent events, the node name is
"model"(not"agent").
6) Key “don’t break imports” reminders
- •Graph API:
langgraph.graph(START/END/StateGraph) - •Functional API:
langgraph.func(entrypoint) - •Checkpointing:
langgraph.checkpoint.*(InMemorySaver, sqlite/postgres modules) - •Store/memory:
langgraph.store.* - •Agent prebuilt migration target:
langchain.agents(create_agent, AgentState) andlangchain.agents.interrupt(interrupt types)