5.创建自定义深度智能体(Deep Agent)
你可以向 create_deep_agent 传递多个参数来创建你自己的自定义深度智能体。下面给出具体的参数解析:
create_deep_agent 是 DeepAgent 框架的核心构造函数。
它负责组合模型、工具、中间件和子智能体(SubAgent),创建一个具备层次化思维与自我规划能力的智能体。
通过 create_deep_agent,你可以:
- 注册模型可用的工具;
- 添加任务规划、文件系统等中间件;
- 嵌入子智能体,实现递归调用;
- 自定义提示词(prompt)和执行策略。
5.1 参数解析
tools(必填)
create_deep_agent 的第一个参数是 tools,它应该是函数列表或 LangChain 的 @tool 对象列表。智能体(以及任何子智能体)将可以访问这些工具。
system_prompt(必填)
create_deep_agent 的第二个参数是 system_prompt,它将作为深度智能体的提示(prompt)的一部分。需要注意的是,我们的深度智能体中间件会在此基础上追加更多指令,包括待办事项、文件系统和子智能体使用,因此这并不是智能体看到的完整提示。
subagents(可选)
create_deep_agent 的一个仅关键字参数是 subagents,用于指定深度智能体可以访问的自定义子智能体。你可以在这里了解为什么可能需要使用子智能体。
subagents 应该是字典列表,每个字典遵循以下结构:
5.2 SubAgent 与 CompiledSubAgent 类型定义
SubAgent 类型
class SubAgent(TypedDict):
name: str
description: str
system_prompt: str
tools: NotRequired[list[str]]
model: NotRequired[Union[LanguageModelLike, dict[str, Any]]]
middleware: NotRequired[list[AgentMiddleware]]
interrupt_on: NotRequired[dict[str, bool | InterruptOnConfig]]
"""The tool configs to use for the agent."""
CompiledSubAgent 类型
class CompiledSubAgent(TypedDict):
name: str
description: str
runnable: Runnable
设计理念:CompiledSubAgent 适用于复杂场景(如已有自定义 agent 逻辑),可将预构建的图或 Agent 直接嵌入系统中使用。
5.3 字段说明
SubAgent 字段说明
· name:子智能体的名称,主智能体调用子智能体时使用。
· description:显示给主智能体的子智能体描述。
· system_prompt:子智能体的提示文本。
· tools:子智能体可访问的工具列表。默认情况下,子智能体可访问传入的所有工具以及所有内置工具。
· model:可选的模型实例或用于子智能体的模型配置字典(如果省略,则继承主模型)。
· middleware:附加到子智能体的中间件。可以在这里了解中间件以及它如何与 create_agent 配合使用。
· interrupt_on:自定义中断配置,用于为您的工具指定人机交互。
CompiledSubAgent 字段说明
· name:子智能体名称,主智能体调用时使用。
· description:显示给主智能体的子智能体描述。
· graph:预构建的 LangGraph 图/智能体,将作为子智能体使用。
5.4 使用示例
使用 SubAgent 示例
def internet_search(
query: str,
max_results: int = 5,
topic: Literal["general", "news", "finance"] = "general",
include_raw_content: bool = False,
):
"""Run a web search"""
return tavily_client.search(
query,
max_results=max_results,
include_raw_content=include_raw_content,
topic=topic,
)
research_subagent = {
"name": "research-agent",
"description": "Used to research more in depth questions",
"system_prompt": "You are a great researcher",
"tools": [internet_search],
"model": "openai:gpt-4o", # Optional override, defaults to main agent model
}
subagents = [research_subagent]
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-20250514",
subagents=subagents
)
使用 CompiledSubAgent 示例
对于更复杂的场景,你可以提供自己预构建的 LangGraph 图作为子智能体:
# Create a custom agent graph
custom_graph = create_agent(
model=your_model,
tools=specialized_tools,
prompt="You are a specialized agent for data analysis..."
)
# Use it as a custom subagent
custom_subagent = CompiledSubAgent(
name="data-analyzer",
description="Specialized agent for complex data analysis tasks",
runnable=custom_graph
)
subagents = [custom_subagent]
agent = create_deep_agent(
model="anthropic:claude-sonnet-4-20250514",
tools=[internet_search],
system_prompt=research_instructions,
subagents=subagents
)