LangChain Agent API
create_agent() full parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
| model | str or BaseChatModel | None (required) | Language model |
| tools | Sequence or None | None | Tool list. Supports @tool functions, Pydantic models, dict |
| system_prompt | str or SystemMessage or None | None | System prompt |
| middleware | Sequence[AgentMiddleware] | () | Middleware list |
| response_format | ResponseFormat or type or dict or None | None | Structured output configuration |
| state_schema | type[AgentState] or None | None | Custom state structure |
| context_schema | type or None | None | Runtime context structure |
| checkpointer | Checkpointer or None | None | Conversation persistence |
| store | BaseStore or None | None | Cross-session storage |
| interrupt_before | list[str] or None | None | Pause before these nodes |
| interrupt_after | list[str] or None | None | Pause after these nodes |
| debug | bool | False | Whether to output verbose logs |
| name | str or None | None | Agent name |
| cache | BaseCache or None | None | Cache configuration |
CompiledStateGraph methods
| Method | Description |
|---|---|
| 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
| Field | Type | Required? | Description |
|---|---|---|---|
| messages | list[AnyMessage] | Yes | Message history (add_messages reducer) |
| jump_to | "tools" or "model" or "end" or None | no | Flow jump (ephemeral) |
| structured_response | Any | no | Structured 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"}})
# 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"}})