外观
智能体(agent)是一个循环调用工具直到给定任务完成的模型。
harness(智能体框架)是围绕这个循环的一切:提示词、工具,以及任何塑造模型行为的中间件。
INFO
智能体 = 模型 + harness
harness 的职责:在正确的时机为给定任务给模型提供正确的上下文。
create_agent 是一个高度可配置的 harness。在最简单的情况下,你可以这样创建一个:
python
from langchain.agents import create_agent
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="openai:gpt-5.5", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="anthropic:claude-sonnet-4-6", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="openrouter:z-ai/glm-5.2", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="fireworks:accounts/fireworks/models/glm-5p2", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="baseten:zai-org/GLM-5.2", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="ollama:north-mini-code-1.0", tools=tools)ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "google-genai:gemini-3.6-flash", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "openai:gpt-5.5", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "anthropic:claude-sonnet-4-6", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "openrouter:openrouter:z-ai/glm-5.2", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "fireworks:accounts/fireworks/models/glm-5p2", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "baseten:zai-org/GLM-5.2", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "ollama:north-mini-code-1.0", tools });在此基础上,你可以直接使用 model=、tools= 和 system_prompt= 参数配置基础功能。对于更高级的能力,请用中间件扩展 harness。
核心组件
模型
传入模型标识符字符串("provider:model")或已初始化的模型实例,即可为你的智能体选择模型。参数、提供商设置与动态模型选择参见 模型。
python
from langchain.agents import create_agent
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="openai:gpt-5.5", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="anthropic:claude-sonnet-4-6", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="openrouter:z-ai/glm-5.2", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="fireworks:accounts/fireworks/models/glm-5p2", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="baseten:zai-org/GLM-5.2", tools=tools)python
from langchain.agents import create_agent
agent = create_agent(model="ollama:north-mini-code-1.0", tools=tools)ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "google-genai:gemini-3.6-flash", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "openai:gpt-5.5", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "anthropic:claude-sonnet-4-6", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "openrouter:openrouter:z-ai/glm-5.2", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "fireworks:accounts/fireworks/models/glm-5p2", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "baseten:zai-org/GLM-5.2", tools });ts
import { createAgent } from "langchain";
var agent = createAgent({ model: "ollama:north-mini-code-1.0", tools });工具
要为智能体提供工具,请传入任意 Python 可调用对象、LangChain 工具或工具字典。工具定义、上下文访问与动态工具选择参见 工具。
python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=[search])python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="openai:gpt-5.5", tools=[search])python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="anthropic:claude-sonnet-4-6", tools=[search])python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="openrouter:z-ai/glm-5.2", tools=[search])python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="fireworks:accounts/fireworks/models/glm-5p2", tools=[search])python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="baseten:zai-org/GLM-5.2", tools=[search])python
from langchain.agents import create_agent
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for information."""
return f"Results for: {query}"
agent = create_agent(model="ollama:north-mini-code-1.0", tools=[search])ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "google-genai:gemini-3.6-flash", tools: [search] });ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "openai:gpt-5.5", tools: [search] });ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "anthropic:claude-sonnet-4-6", tools: [search] });ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "openrouter:openrouter:z-ai/glm-5.2", tools: [search] });ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "fireworks:accounts/fireworks/models/glm-5p2", tools: [search] });ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "baseten:zai-org/GLM-5.2", tools: [search] });ts
import { tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Results for: ${query}`, {
name: "search",
description: "Search for information",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({ model: "ollama:north-mini-code-1.0", tools: [search] });系统提示词
塑造智能体处理任务的方式。系统提示词参数接受字符串或 SystemMessage。要在运行时使用动态提示词,请使用中间件。
python
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)python
agent = create_agent(
model="openai:gpt-5.5",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)python
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)python
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)python
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)python
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)python
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=tools,
system_prompt="You are a helpful assistant. Be concise and accurate.",
)ts
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});ts
var agent = createAgent({
model: "openai:gpt-5.5",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});ts
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});ts
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});ts
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});ts
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});ts
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools,
systemPrompt: "You are a helpful assistant. Be concise and accurate.",
});结构化输出
使用 response_format= 从智能体返回经过校验的 schema。策略与示例参见 结构化输出。
python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="openai:gpt-5.5", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="anthropic:claude-sonnet-4-6", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="openrouter:z-ai/glm-5.2", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="fireworks:accounts/fireworks/models/glm-5p2", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="baseten:zai-org/GLM-5.2", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)python
from pydantic import BaseModel
from langchain.agents import create_agent
class Answer(BaseModel):
summary: str
confidence: float
agent = create_agent(model="ollama:north-mini-code-1.0", tools=tools, response_format=Answer)
result = agent.invoke({"messages": [{"role": "user", "content": "Summarize AI trends"}]})
result["structured_response"] # Answer(summary=..., confidence=...)ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "openai:gpt-5.5",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }ts
const Answer = z.object({ summary: z.string(), confidence: z.number() });
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools,
responseFormat: Answer,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "Summarize AI trends" }],
});
result.structuredResponse; // { summary: ..., confidence: ... }调用
TIP
用 LangSmith 追踪这个循环的每一步、调试工具调用并评估智能体输出。按照追踪快速入门完成设置。我们还建议你设置 LangSmith Engine,它会监控你的追踪、检测问题并提出修复建议。
你可以用一条消息调用智能体。在幕后,这会把一次更新传给智能体的 State。所有智能体的状态中都包含一个消息序列;要调用智能体,请随 thread_id 一起传入一条新消息,这样智能体才能持久化并恢复对话历史: 你可以用一条消息调用智能体。在幕后,这会把一次更新传给智能体的 State。所有智能体的状态中都包含一个消息序列;要调用智能体,请随 thread_id 一起传入一条新消息,这样智能体才能持久化并恢复对话历史:
python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="openai:gpt-5.5",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)python
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[],
checkpointer=InMemorySaver(),
)
config = {"configurable": {"thread_id": str(uuid7())}}
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config=config,
)
# 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = agent.invoke(
{"messages": [{"role": "user", "content": "What about tomorrow?"}]},
config=config,
)ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "openai:gpt-5.5",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);ts
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [],
checkpointer: new MemorySaver(),
});
const config = { configurable: { thread_id: crypto.randomUUID() } };
let result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
config,
);
// 同一对话中的后续轮次:复用同一个 thread_id 以保留对话历史
result = await agent.invoke(
{ messages: [{ role: "user", content: "What about tomorrow?" }] },
config,
);INFO
使用 thread_id 持久化对话历史,要求智能体配置了检查点器。部署到 LangSmith 时,会自动配置检查点器。在本地,请显式传入一个,例如 create_agent(..., checkpointer=InMemorySaver())。
如果还需要向工具和中间件传递每次运行时的配置(例如用户 ID、API 密钥或功能开关),请将其作为 context 与 config 一起传入。用 context_schema 定义该数据的形状,并通过 runtime.context 访问它:
python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="openai:gpt-5.5",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)python
from dataclasses import dataclass
from langchain.agents import create_agent
from langchain_core.utils.uuid import uuid7
from langgraph.checkpoint.memory import InMemorySaver
@dataclass
class Context:
user_id: str
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[],
context_schema=Context,
checkpointer=InMemorySaver(),
)
result = agent.invoke(
{"messages": [{"role": "user", "content": "What's the weather in San Francisco?"}]},
config={"configurable": {"thread_id": str(uuid7())}},
context=Context(user_id="user-123"),
)thread_id 限定对话(消息历史、检查点)的作用域,而 context 携带你的工具和中间件在调用时读取的每次运行数据。两者通常一起传入。更多信息参见 工具上下文 与 运行时。 如果还需要向工具和中间件传递每次运行时的配置(例如用户 ID、API 密钥或功能开关),请将其作为 context 与 config 一起传入。用 contextSchema 定义该数据的形状,并通过 runtime.context 访问它:
ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "openai:gpt-5.5",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);ts
import * as z from "zod";
import { AIMessage } from "@langchain/core/messages";
import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
const contextSchema = z.object({
user_id: z.string(),
});
const agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [],
contextSchema,
checkpointer: new MemorySaver(),
});
const result = await agent.invoke(
{
messages: [
{ role: "user", content: "What's the weather in San Francisco?" },
],
},
{
configurable: { thread_id: crypto.randomUUID() },
context: { user_id: "user-123" },
},
);thread_id 限定对话(消息历史、检查点)的作用域,而 context 携带你的工具和中间件在调用时读取的每次运行数据。两者通常一起传入。更多信息参见 工具上下文 与 运行时。
流式输出
invoke 会在运行结束时返回最终响应。如果智能体执行多次工具调用,用户通常需要在完成之前看到进度更新。请使用流式输出来实时呈现中间消息与工具活动。
python
from langchain.messages import AIMessage, HumanMessage
stream = agent.stream_events(
{"messages": [{"role": "user", "content": "Search for AI news and summarize the findings"}]},
version="v3",
)
for snapshot in stream.values:
# 每个快照都包含该时刻的完整状态
latest_message = snapshot["messages"][-1]
if latest_message.content:
if isinstance(latest_message, HumanMessage):
print(f"User: {latest_message.content}")
elif isinstance(latest_message, AIMessage):
print(f"Agent: {latest_message.content}")
elif latest_message.tool_calls:
print(f"Calling tools: {[tc['name'] for tc in latest_message.tool_calls]}")ts
const stream = await agent.streamEvents(
{
messages: [
{
role: "user",
content: "Search for AI news and summarize the findings",
},
],
},
{ version: "v3" },
);
for await (const snapshot of stream.values) {
// 每个快照都包含该时刻的完整状态
const latestMessage = snapshot.messages.at(-1);
if (latestMessage?.content) {
if (latestMessage.type === "human") {
console.log(`User: ${latestMessage.content}`);
} else if (latestMessage.type === "ai") {
console.log(`Agent: ${latestMessage.content}`);
}
} else if (latestMessage?.tool_calls?.length) {
const toolCallNames = latestMessage.tool_calls.map((tc) => tc.name);
console.log(`Calling tools: ${toolCallNames.join(", ")}`);
}
}TIP
流式模式、事件类型与 UI 模式参见 流式输出。
配置 harness
create_agent 具有很强的可扩展性。中间件是实现自定义的基本单元:每一块负责一个关注点,在正确的时机挂接到智能体循环中,并可与任何其他中间件自由组合。只取你的用例需要的部分,跳过其余部分。
常见的模式已作为一流中间件预置。你可以把其他任何需求构建为自定义中间件。
随着智能体承担复杂的工作,它们需要在几个关键领域获得支持。中间件生态提供:
- 执行环境 — 工具、文件系统、沙箱与代码执行
- 上下文管理 — 摘要、记忆、技能与提示词缓存
- 规划与委派 — 用于并行、隔离工作的待办列表与子智能体
- 容错 — 重试、回退与调用限制
- 护栏 — PII 检测与内容控制
- 转向(Steering) — 在高影响操作之前进行人在回路审批
TIP
create_deep_agent 为长时间运行的编码与研究任务预先组装了这套技术栈(默认包含文件系统、摘要、子智能体与提示词缓存)。完整的预置 harness 参见 Deep Agents。
执行环境
当智能体能够采取行动而不仅仅是生成文本时,它们尤其有用。执行环境为智能体提供一个工作空间:可以调用的工具、用于跨轮次读写文件的工作空间,以及用于运行脚本或 shell 命令的代码执行。
python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="openai:gpt-5.5",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)python
from langchain.agents import create_agent
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[search],
middleware=[FilesystemMiddleware(backend=StateBackend())],
)ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "openai:gpt-5.5",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});ts
import { createAgent } from "langchain";
import { createFilesystemMiddleware, StateBackend } from "deepagents";
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [search],
middleware: [createFilesystemMiddleware({ backend: new StateBackend() })],
});参见 FilesystemMiddleware、沙箱、解释器。
上下文管理
每次模型调用都有固定的上下文窗口。随着智能体运行,该窗口会逐渐被累积的历史、工具结果与中间步骤填满。摘要(summarization)会在溢出发生前压缩历史;记忆会在启动时加载持久指令,使知识跨会话延续;技能则按需呈现领域知识,而不是一开始就全部加载。
python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="google_genai:gemini-3.6-flash"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="openai:gpt-5.5"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="anthropic:claude-sonnet-4-6"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="openrouter:z-ai/glm-5.2"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="fireworks:accounts/fireworks/models/glm-5p2"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="baseten:zai-org/GLM-5.2"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware, MemoryMiddleware, SkillsMiddleware, SummarizationMiddleware
backend = StateBackend()
model="ollama:north-mini-code-1.0"
agent = create_agent(
model=model,
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
SummarizationMiddleware(model=model, backend=backend),
MemoryMiddleware(backend=backend, sources=["./AGENTS.md"]),
SkillsMiddleware(backend=backend, sources=["./skills/"]),
],
)ts
import { createAgent } from "langchain";
import {
StateBackend,
createFilesystemMiddleware,
createSkillsMiddleware,
createSummarizationMiddleware,
} from "deepagents";
var backend = new StateBackend();
const model = "anthropic:claude-sonnet-4-6";
var agent = createAgent({
model,
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
createSummarizationMiddleware({ model, backend }),
createSkillsMiddleware({ backend, sources: ["./skills/"] }),
],
});参见 SummarizationMiddleware、MemoryMiddleware、技能、上下文工程。
规划与委派
复杂的任务往往超出单个上下文窗口所能处理的范围。委派让主智能体把工作拆分成若干部分,交给各自在隔离上下文中运行的子智能体,从而专注于协调而不是执行。工作可以并行运行;主智能体的上下文保持干净。
python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="openai:gpt-5.5",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)python
from deepagents.backends import StateBackend
from deepagents.middleware import FilesystemMiddleware
from deepagents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
from langchain.agents.middleware import TodoListMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
backend = StateBackend()
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[search],
middleware=[
FilesystemMiddleware(backend=backend),
TodoListMiddleware(),
SubAgentMiddleware(
backend=backend,
subagents=[
{
"name": "researcher",
"description": "Searches and returns a structured summary.",
"system_prompt": "Use the search tool to research the question and summarize key points.",
"tools": [search],
"model": "anthropic:claude-sonnet-4-6",
"middleware": [],
}
],
),
],
)ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "openai:gpt-5.5",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});ts
import { createAgent, todoListMiddleware, tool } from "langchain";
import {
createFilesystemMiddleware,
createSubAgentMiddleware,
StateBackend,
} from "deepagents";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var backend = new StateBackend();
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [search],
middleware: [
createFilesystemMiddleware({ backend }),
todoListMiddleware(),
createSubAgentMiddleware({
defaultModel: "anthropic:claude-sonnet-4-6",
defaultTools: [],
subagents: [
{
name: "researcher",
description: "Searches and returns a structured summary.",
systemPrompt:
"Use the search tool to research the question and summarize key points.",
tools: [search],
model: "anthropic:claude-sonnet-4-6",
middleware: [],
},
],
}),
],
});参见 子智能体。
命名你的智能体
可以可选地为智能体使用一个标识符。当把智能体作为子图嵌入多智能体系统时,这尤其有用。
python
agent = create_agent(model="google_genai:gemini-3.6-flash", tools=tools, name="research_assistant")python
agent = create_agent(model="openai:gpt-5.5", tools=tools, name="research_assistant")python
agent = create_agent(model="anthropic:claude-sonnet-4-6", tools=tools, name="research_assistant")python
agent = create_agent(model="openrouter:z-ai/glm-5.2", tools=tools, name="research_assistant")python
agent = create_agent(model="fireworks:accounts/fireworks/models/glm-5p2", tools=tools, name="research_assistant")python
agent = create_agent(model="baseten:zai-org/GLM-5.2", tools=tools, name="research_assistant")python
agent = create_agent(model="ollama:north-mini-code-1.0", tools=tools, name="research_assistant")ts
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools,
name: "research_assistant",
});ts
var agent = createAgent({
model: "openai:gpt-5.5",
tools,
name: "research_assistant",
});ts
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools,
name: "research_assistant",
});ts
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools,
name: "research_assistant",
});ts
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools,
name: "research_assistant",
});ts
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools,
name: "research_assistant",
});ts
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools,
name: "research_assistant",
});容错
生产环境中的智能体会遇到开发阶段很少出现的故障:速率限制、模型超时、瞬时 API 错误。容错中间件在基础设施层面处理这些问题,因此你的工具与业务逻辑不需要在每个调用周围都写 try/catch。
python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="openai:gpt-5.5",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import ModelRetryMiddleware, ToolRetryMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[search],
middleware=[
ModelRetryMiddleware(max_retries=3),
ToolRetryMiddleware(max_retries=2),
],
)ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "openai:gpt-5.5",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});ts
import {
createAgent,
modelRetryMiddleware,
tool,
toolRetryMiddleware,
} from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [search],
middleware: [
modelRetryMiddleware({ maxRetries: 3 }),
toolRetryMiddleware({ maxRetries: 2 }),
],
});参见 ModelRetryMiddleware、ToolRetryMiddleware、预置中间件。
参见 modelRetryMiddleware、toolRetryMiddleware、预置中间件。
护栏
有些策略无法放在提示词中——无论模型做什么,它们都需要被确定性地强制实施。护栏会拦截数据在智能体循环中流动的过程,在工具结果到达模型上下文之前应用合规规则或内容策略。
python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[search],
middleware=[PIIMiddleware("email")],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="openai:gpt-5.5",
tools=[search],
middleware=[PIIMiddleware("email")],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search],
middleware=[PIIMiddleware("email")],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[search],
middleware=[PIIMiddleware("email")],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[search],
middleware=[PIIMiddleware("email")],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[search],
middleware=[PIIMiddleware("email")],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import PIIMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[search],
middleware=[PIIMiddleware("email")],
)ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [search],
middleware: [piiMiddleware("email")],
});ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "openai:gpt-5.5",
tools: [search],
middleware: [piiMiddleware("email")],
});ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [search],
middleware: [piiMiddleware("email")],
});ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [search],
middleware: [piiMiddleware("email")],
});ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [search],
middleware: [piiMiddleware("email")],
});ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [search],
middleware: [piiMiddleware("email")],
});ts
import { createAgent, piiMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [search],
middleware: [piiMiddleware("email")],
});参见 PIIMiddleware、预置中间件。
参见 piiMiddleware、预置中间件。
转向(Steering)
完全自主并不总是合适的。转向让你可以在特定的决策点放置人工介入——在破坏性写入、昂贵 API 调用或任何需要判断的操作之前——而无需重构你的智能体。智能体会暂停并等待;人工批准、编辑或拒绝;执行继续。
python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="google_genai:gemini-3.6-flash",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="openai:gpt-5.5",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="anthropic:claude-sonnet-4-6",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="openrouter:z-ai/glm-5.2",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="baseten:zai-org/GLM-5.2",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)python
from langchain.agents import create_agent
from langchain.agents.middleware import HumanInTheLoopMiddleware
from langchain.tools import tool
@tool
def search(query: str) -> str:
"""Search for a query and return a short summary."""
return f"Search results for: {query}"
agent = create_agent(
model="ollama:north-mini-code-1.0",
tools=[search],
middleware=[HumanInTheLoopMiddleware(interrupt_on={"write_file": True})],
)ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "google-genai:gemini-3.6-flash",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "openai:gpt-5.5",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});ts
import { createAgent, humanInTheLoopMiddleware, tool } from "langchain";
import * as z from "zod";
var search = tool(({ query }) => `Search results for: ${query}`, {
name: "search",
description: "Search for a query and return a short summary.",
schema: z.object({ query: z.string() }),
});
var agent = createAgent({
model: "ollama:north-mini-code-1.0",
tools: [search],
middleware: [humanInTheLoopMiddleware({ interruptOn: { writeFile: true } })],
});参见 HumanInTheLoopMiddleware、人在回路。
参见 humanInTheLoopMiddleware、人在回路。