Skip to content
On this page

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 类型
python
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 类型
python
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 示例
python
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 图作为子智能体:

python
# 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
)