LangChain Agent API


create_agent() full parameters

ParameterTypeDefault valueDescription
modelstr or BaseChatModelNone (required)Language model
toolsSequence or NoneNoneTool list. Supports @tool functions, Pydantic models, dict
system_promptstr or SystemMessage or NoneNoneSystem prompt
middlewareSequence[AgentMiddleware]()Middleware list
response_formatResponseFormat or type or dict or NoneNoneStructured output configuration
state_schematype[AgentState] or NoneNoneCustom state structure
context_schematype or NoneNoneRuntime context structure
checkpointerCheckpointer or NoneNoneConversation persistence
storeBaseStore or NoneNoneCross-session storage
interrupt_beforelist[str] or NoneNonePause before these nodes
interrupt_afterlist[str] or NoneNonePause after these nodes
debugboolFalseWhether to output verbose logs
namestr or NoneNoneAgent name
cacheBaseCache or NoneNoneCache configuration

CompiledStateGraph methods

MethodDescription
invoke(input, config=None)Run synchronously, return final state
ainvoke(input, config=None)Run asynchronously, return final state
stream(input, config=None, stream_mode="updates")Synchronous streaming run
astream(input, config=None, stream_mode="updates")Asynchronous streaming run
get_state(config)Get current state snapshot
update_state(config, values)Manually update state

AgentState structure

FieldTypeRequired?Description
messageslist[AnyMessage]YesMessage history (add_messages reducer)
jump_to"tools" or "model" or "end" or NonenoFlow jump (ephemeral)
structured_responseAnynoStructured output result (OmitFromInput)

Common usage examples

Example

from langchain.agents import create_agent

# Basic usage
agent = create_agent(model="deepseek:deepseek-v4-flash", tools=[tool1, tool2])
result = agent.invoke({"messages": [HumanMessage(content="Hello")]})

# Full configuration
agent = create_agent(
    model="deepseek:deepseek-v4-flash",
    tools=[tool1, tool2],
    system_prompt="You are an assistant.",
    middleware=[my_middleware],
    response_format=MySchema,
    checkpointer=checkpointer,
    store=store,
    name="my_agent",
)

# Streaming run
for chunk in agent.stream(inputs, stream_mode="updates"):
    print(chunk)

# Get state
state = agent.get_state({"configurable": {"thread_id": "1"}})
Other extensions