tools= 参数将其与用于文件管理和子智能体生成的内置运行时工具一起传递给 create_deep_agent。
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "google-genai:gemini-3.6-flash",
tools: [search, fetchUrl, runQuery],
});
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "openai:gpt-5.5",
tools: [search, fetchUrl, runQuery],
});
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [search, fetchUrl, runQuery],
});
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [search, fetchUrl, runQuery],
});
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [search, fetchUrl, runQuery],
});
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [search, fetchUrl, runQuery],
});
import { createDeepAgent } from "deepagents";
const agent = await createDeepAgent({
model: "ollama:north-mini-code-1.0",
tools: [search, fetchUrl, runQuery],
});
自定义工具
您可以将任何可调用对象,例如普通函数、使用 LangChain@tool 装饰器的函数或工具字典,直接传递给 tools=。Deep Agents 会根据函数签名和文档字符串推断工具模式,因此在大多数情况下无需单独定义模式。
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "google-genai:gemini-3.6-flash",
tools: [internetSearch],
});
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "openai:gpt-5.5",
tools: [internetSearch],
});
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "anthropic:claude-sonnet-4-6",
tools: [internetSearch],
});
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools: [internetSearch],
});
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools: [internetSearch],
});
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "baseten:zai-org/GLM-5.2",
tools: [internetSearch],
});
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { createDeepAgent } from "deepagents";
import { z } from "zod";
const internetSearch = tool(
async ({
query,
maxResults = 5,
topic = "general",
includeRawContent = false,
}: {
query: string;
maxResults?: number;
topic?: "general" | "news" | "finance";
includeRawContent?: boolean;
}) => {
const tavilySearch = new TavilySearch({
maxResults,
tavilyApiKey: process.env.TAVILY_API_KEY,
includeRawContent,
topic,
});
return await tavilySearch._call({ query });
},
{
name: "internet_search",
description: "运行网络搜索",
schema: z.object({
query: z.string().describe("搜索查询"),
maxResults: z.number().optional().default(5),
topic: z
.enum(["general", "news", "finance"])
.optional()
.default("general"),
includeRawContent: z.boolean().optional().default(false),
}),
},
);
const agent = createDeepAgent({
model: "ollama:north-mini-code-1.0",
tools: [internetSearch],
});
StructuredTool、返回类型、错误处理等)的完整详细信息,请参阅 工具。
MCP 工具
Deep Agents 完全支持 模型上下文协议 (MCP),这是一个将智能体连接到外部服务的开放标准。您可以从任何 MCP 服务器加载工具,并将其直接传递给
create_deep_agent。@langchain/mcp-adapters 以连接到 MCP 服务器:
npm install @langchain/mcp-adapters
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "google-genai:gemini-3.6-flash",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "openai:gpt-5.5",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "anthropic:claude-sonnet-4-6",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "openrouter:openrouter:z-ai/glm-5.2",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "fireworks:accounts/fireworks/models/glm-5p2",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "baseten:zai-org/GLM-5.2",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
import { createDeepAgent } from "deepagents";
const { MultiServerMCPClient } = await import("@langchain/mcp-adapters");
const client = new MultiServerMCPClient({
my_server: {
transport: "http",
url: "http://localhost:8000/mcp",
},
});
const tools = await client.getTools();
const agent = await createDeepAgent({
model: "ollama:north-mini-code-1.0",
tools,
});
const result = await agent.invoke({
messages: [{ role: "user", content: "使用MCP服务器来帮助我。" }],
});
内置运行时工具
除了您提供的工具外,每个 Deep Agent 还附带一组来自运行时环境的内置工具:| 工具 | 描述 |
|---|---|
ls | 列出目录中的文件。 |
read_file | 读取文件内容(支持分页和多模态)。 |
write_file | 创建新文件。 |
edit_file | 在文件中执行精确的字符串替换。 |
glob | 查找匹配 glob 模式的文件。 |
grep | 搜索文件内容。 |
execute | 运行 shell 命令(仅限沙箱后端)。 |
task | 生成一个子智能体来处理委派的任务。 |
write_todos 添加结构化任务规划功能,请通过 TodoListMiddleware 启用。请参阅 任务规划。
有关每个内置工具功能的完整说明,请参阅 运行时环境概述。
多模态工具输出
当所选模型支持多模态工具结果时,自定义工具可以返回纯文本或标准内容块(文本、图像、音频、视频和文件)。内置的read_file 工具也会为支持的非文本文件类型返回多模态内容块。
对于纯文本结果,请返回字符串;对于文本加媒体或交错的多模态输出,请返回一个有序的内容块列表。有关示例和上下文压缩的考虑,请参阅多模态和工具返回值。
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

