What is State in LangGraph?
State in LangGraph is a way to maintain and track information as an AI system processes data.
Think of it as the system’s memory, allowing it to remember and update information as it moves through different stages of a workflow, or graph.

Example
Simple
from typing import TypedDict
from langgraph.graph import END, StateGraph
class SimpleState(TypedDict):
count: int
def increment(state: SimpleState) -> SimpleState:
return {
"count": state["count"] + 1
}
def shouldContinue(state: SimpleState):
if(state["count"] < 5):
return "continue"
else:
# return END
return "stop"
graph = StateGraph(SimpleState)
graph.add_node("increment", increment)
graph.add_conditional_edges("increment", shouldContinue,
{
"continue": "increment",
"stop": END
}
)
graph.set_entry_point("increment")
app = graph.compile()
initial_state = {
"count" : 0
}
result = app.invoke(initial_state)
print(result)Complex
from typing import TypedDict
from langgraph.graph import END, StateGraph
from typing import List
class SimpleState(TypedDict):
count: int
c_sum: int
history: List[int]
def increment(state: SimpleState) -> SimpleState:
newCount = state["count"] + 1
return {
"count": newCount,
"c_sum": state["c_sum"] + newCount,
"history": state["history"] + [newCount]
}
def shouldContinue(state: SimpleState):
if(state["count"] < 5):
return "continue"
else:
# return END
return "stop"
graph = StateGraph(SimpleState)
graph.add_node("increment", increment)
graph.add_conditional_edges("increment", shouldContinue,
{
"continue": "increment",
"stop": END
}
)
graph.set_entry_point("increment")
app = graph.compile()
initial_state = {
"count" : 0,
"c_sum" : 0,
"history": []
}
result = app.invoke(initial_state)
print(result)Annotated StateGraph
from typing import TypedDict, List, Annotated
from langgraph.graph import END, StateGraph
import operator
class SimpleState(TypedDict):
count: int
sum: Annotated[int, operator.add]
history: Annotated[List[int], operator.concat]
def increment(state: SimpleState) -> SimpleState:
newCount = state["count"] + 1
return {
"count": newCount,
"sum": newCount,
"history": [newCount]
}
def shouldContinue(state: SimpleState):
if(state["count"] < 5):
return "continue"
else:
# return END
return "stop"
graph = StateGraph(SimpleState)
graph.add_node("increment", increment)
graph.add_conditional_edges("increment", shouldContinue,
{
"continue": "increment",
"stop": END
}
)
graph.set_entry_point("increment")
app = graph.compile()
initial_state = {
"count" : 0,
"sum" : 0,
"history": []
}
result = app.invoke(initial_state)
print(result)