Deep Agents 参考
欢迎来到 Deep Agents 参考文档!
正在施工中
此页面仍在建设中,感谢您的耐心等待,我们将继续扩充和改进内容。
deepagents ¶
DeepAgents 包。
| 函数 | 描述 |
|---|---|
create_deep_agent |
创建一个 deep agent。 |
FilesystemMiddleware ¶
为 agent 提供文件系统工具的中间件。
此中间件向 agent 添加了六个文件系统工具:ls、read_file、write_file、edit_file、glob 和 grep。文件可以使用任何实现了 BackendProtocol 的后端进行存储。
| 参数 | 描述 |
|---|---|
backend
|
用于文件存储的后端。如果未提供,则默认为 StateBackend(在 agent 状态中的临时存储)。对于持久化存储或混合设置,请使用带有自定义路由的 CompositeBackend。
类型: |
system_prompt
|
可选的自定义系统提示覆盖。
类型: |
custom_tool_descriptions
|
可选的自定义工具描述覆盖。 |
tool_token_limit_before_evict
|
可选的 token 限制,在将工具结果移出到文件系统之前触发。
类型: |
示例
from deepagents.middleware.filesystem import FilesystemMiddleware
from deepagents.memory.backends import StateBackend, StoreBackend, CompositeBackend
from langchain.agents import create_agent
# Ephemeral storage only (default)
agent = create_agent(middleware=[FilesystemMiddleware()])
# With hybrid storage (ephemeral + persistent /memories/)
backend = CompositeBackend(default=StateBackend(), routes={"/memories/": StoreBackend()})
agent = create_agent(middleware=[FilesystemMiddleware(memory_backend=backend)])
| 方法 | 描述 |
|---|---|
before_agent |
在 agent 执行开始前运行的逻辑。 |
abefore_agent |
在 agent 执行开始前运行的异步逻辑。 |
before_model |
在调用模型前运行的逻辑。 |
abefore_model |
在调用模型前运行的异步逻辑。 |
after_model |
在调用模型后运行的逻辑。 |
aafter_model |
在调用模型后运行的异步逻辑。 |
after_agent |
在 agent 执行完成后运行的逻辑。 |
aafter_agent |
在 agent 执行完成后运行的异步逻辑。 |
__init__ |
初始化文件系统中间件。 |
wrap_model_call |
更新系统提示,以包含有关使用文件系统的说明。 |
awrap_model_call |
(异步)更新系统提示,以包含有关使用文件系统的说明。 |
wrap_tool_call |
检查工具调用结果的大小,如果太大则移出到文件系统。 |
awrap_tool_call |
(异步)检查工具调用结果的大小,如果太大则移出到文件系统。 |
before_agent ¶
在 agent 执行开始前运行的逻辑。
abefore_agent 异步 ¶
在 agent 执行开始前运行的异步逻辑。
before_model ¶
在调用模型前运行的逻辑。
abefore_model 异步 ¶
在调用模型前运行的异步逻辑。
after_model ¶
在调用模型后运行的逻辑。
aafter_model 异步 ¶
在调用模型后运行的异步逻辑。
after_agent ¶
在 agent 执行完成后运行的逻辑。
aafter_agent 异步 ¶
在 agent 执行完成后运行的异步逻辑。
__init__ ¶
__init__(
*,
backend: BACKEND_TYPES | None = None,
system_prompt: str | None = None,
custom_tool_descriptions: dict[str, str] | None = None,
tool_token_limit_before_evict: int | None = 20000,
) -> None
wrap_model_call ¶
wrap_model_call(
request: ModelRequest, handler: Callable[[ModelRequest], ModelResponse]
) -> ModelResponse
更新系统提示,以包含有关使用文件系统的说明。
| 参数 | 描述 |
|---|---|
request
|
正在处理的模型请求。
类型: |
handler
|
要使用修改后的请求调用的处理函数。
类型: |
| 返回 | 描述 |
|---|---|
ModelResponse
|
来自处理程序的模型响应。 |
awrap_model_call 异步 ¶
awrap_model_call(
request: ModelRequest, handler: Callable[[ModelRequest], Awaitable[ModelResponse]]
) -> ModelResponse
(异步)更新系统提示,以包含有关使用文件系统的说明。
| 参数 | 描述 |
|---|---|
request
|
正在处理的模型请求。
类型: |
handler
|
要使用修改后的请求调用的处理函数。
类型: |
| 返回 | 描述 |
|---|---|
ModelResponse
|
来自处理程序的模型响应。 |
wrap_tool_call ¶
wrap_tool_call(
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], ToolMessage | Command],
) -> ToolMessage | Command
检查工具调用结果的大小,如果太大则移出到文件系统。
| 参数 | 描述 |
|---|---|
request
|
正在处理的工具调用请求。
类型: |
handler
|
要使用修改后的请求调用的处理函数。
类型: |
| 返回 | 描述 |
|---|---|
ToolMessage | Command
|
原始的 ToolMessage,或一个伪工具消息,其中 ToolResult 在状态中。 |
awrap_tool_call 异步 ¶
awrap_tool_call(
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], Awaitable[ToolMessage | Command]],
) -> ToolMessage | Command
(异步)检查工具调用结果的大小,如果太大则移出到文件系统。
| 参数 | 描述 |
|---|---|
request
|
正在处理的工具调用请求。
类型: |
handler
|
要使用修改后的请求调用的处理函数。
类型: |
| 返回 | 描述 |
|---|---|
ToolMessage | Command
|
原始的 ToolMessage,或一个伪工具消息,其中 ToolResult 在状态中。 |
CompiledSubAgent ¶
SubAgent ¶
基类:TypedDict
agent 的规范。
在指定自定义 agent 时,将首先应用来自 `SubAgentMiddleware` 的 `default_middleware`,然后是此规范中指定的任何 `middleware`。要仅使用自定义中间件而不使用默认中间件,请将 `default_middleware=[]` 传递给 `SubAgentMiddleware`。
SubAgentMiddleware ¶
通过一个 `task` 工具为 agent 提供子 agent 的中间件。
此中间件向 agent 添加一个 `task` 工具,可用于调用子 agent。子 agent 对于处理需要多个步骤的复杂任务,或需要大量上下文来解决的任务非常有用。
子 agent 的一个主要好处是它们可以处理多步任务,然后向主 agent 返回一个清晰、简洁的响应。
子 agent 对于需要更窄范围工具和焦点的不同专业领域也很有用。
此中间件带有一个默认的通用子 agent,可用于处理与主 agent 相同的任务,但具有隔离的上下文。
| 参数 | 描述 |
|---|---|
default_model
|
用于子 agent 的模型。可以是 LanguageModelLike 或用于 init_chat_model 的字典。
类型: |
default_tools
|
用于默认通用子 agent 的工具。
类型: |
default_middleware
|
应用于所有子 agent 的默认中间件。如果为 `None`(默认值),则不应用任何默认中间件。传递一个列表以指定自定义中间件。
类型: |
default_interrupt_on
|
用于默认通用子 agent 的工具配置。这些配置也是任何未指定其自己的工具配置的子 agent 的备用配置。
类型: |
subagents
|
提供给 agent 的附加子 agent 列表。
类型: |
system_prompt
|
完整的系统提示覆盖。当提供时,完全替换 agent 的系统提示。
类型: |
general_purpose_agent
|
是否包含通用 agent。默认为 `True`。
类型: |
task_description
|
task 工具的自定义描述。如果为 `None`,则使用默认的描述模板。
类型: |
示例
from langchain.agents.middleware.subagents import SubAgentMiddleware
from langchain.agents import create_agent
# Basic usage with defaults (no default middleware)
agent = create_agent(
"openai:gpt-4o",
middleware=[
SubAgentMiddleware(
default_model="openai:gpt-4o",
subagents=[],
)
],
)
# Add custom middleware to subagents
agent = create_agent(
"openai:gpt-4o",
middleware=[
SubAgentMiddleware(
default_model="openai:gpt-4o",
default_middleware=[TodoListMiddleware()],
subagents=[],
)
],
)
| 方法 | 描述 |
|---|---|
before_agent |
在 agent 执行开始前运行的逻辑。 |
abefore_agent |
在 agent 执行开始前运行的异步逻辑。 |
before_model |
在调用模型前运行的逻辑。 |
abefore_model |
在调用模型前运行的异步逻辑。 |
after_model |
在调用模型后运行的逻辑。 |
aafter_model |
在调用模型后运行的异步逻辑。 |
after_agent |
在 agent 执行完成后运行的逻辑。 |
aafter_agent |
在 agent 执行完成后运行的异步逻辑。 |
wrap_tool_call |
拦截工具执行以进行重试、监视或修改。 |
awrap_tool_call |
通过处理程序回调拦截和控制异步工具执行。 |
__init__ |
初始化 SubAgentMiddleware。 |
wrap_model_call |
更新系统提示以包含有关使用子 agent 的说明。 |
awrap_model_call |
(异步)更新系统提示以包含有关使用子 agent 的说明。 |
state_schema 类属性 实例属性 ¶
state_schema: type[StateT] = cast('type[StateT]', AgentState)
传递给中间件节点的状态的模式。
before_agent ¶
在 agent 执行开始前运行的逻辑。
abefore_agent 异步 ¶
在 agent 执行开始前运行的异步逻辑。
before_model ¶
在调用模型前运行的逻辑。
abefore_model 异步 ¶
在调用模型前运行的异步逻辑。
after_model ¶
在调用模型后运行的逻辑。
aafter_model 异步 ¶
在调用模型后运行的异步逻辑。
after_agent ¶
在 agent 执行完成后运行的逻辑。
aafter_agent 异步 ¶
在 agent 执行完成后运行的异步逻辑。
wrap_tool_call ¶
wrap_tool_call(
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], ToolMessage | Command],
) -> ToolMessage | Command
拦截工具执行以进行重试、监视或修改。
多个中间件会自动组合(先定义的 = 最外层)。除非在 `ToolNode` 上配置了 `handle_tool_errors`,否则异常会传播。
| 参数 | 描述 |
|---|---|
request
|
带有调用 `dict`、`BaseTool`、状态和运行时的工具调用请求。通过 `request.state` 访问状态,通过 `request.runtime` 访问运行时。
类型: |
handler
|
用于执行工具的可调用对象(可以多次调用)。
类型: |
| 返回 | 描述 |
|---|---|
ToolMessage | Command
|
`ToolMessage` 或 `Command`(最终结果)。 |
处理程序可调用对象可以为重试逻辑多次调用。对处理程序的每次调用都是独立且无状态的。
示例
执行前修改请求
def wrap_tool_call(self, request, handler):
request.tool_call["args"]["value"] *= 2
return handler(request)
错误时重试(多次调用处理程序)
def wrap_tool_call(self, request, handler):
for attempt in range(3):
try:
result = handler(request)
if is_valid(result):
return result
except Exception:
if attempt == 2:
raise
return result
根据响应条件性重试
awrap_tool_call 异步 ¶
awrap_tool_call(
request: ToolCallRequest,
handler: Callable[[ToolCallRequest], Awaitable[ToolMessage | Command]],
) -> ToolMessage | Command
通过处理程序回调拦截和控制异步工具执行。
处理程序回调执行工具调用并返回一个 `ToolMessage` 或 `Command`。中间件可以为重试逻辑多次调用处理程序,跳过调用它以进行短路,或修改请求/响应。多个中间件组合,列表中的第一个作为最外层。
| 参数 | 描述 |
|---|---|
request
|
带有调用 `dict`、`BaseTool`、状态和运行时的工具调用请求。通过 `request.state` 访问状态,通过 `request.runtime` 访问运行时。
类型: |
handler
|
用于执行工具并返回 `ToolMessage` 或 `Command` 的异步可调用对象。调用它以执行工具。可以为重试逻辑多次调用。可以跳过调用它以进行短路。
类型: |
| 返回 | 描述 |
|---|---|
ToolMessage | Command
|
`ToolMessage` 或 `Command`(最终结果)。 |
处理程序可调用对象可以为重试逻辑多次调用。对处理程序的每次调用都是独立且无状态的。
示例
错误时异步重试
__init__ ¶
__init__(
*,
default_model: str | BaseChatModel,
default_tools: Sequence[BaseTool | Callable | dict[str, Any]] | None = None,
default_middleware: list[AgentMiddleware] | None = None,
default_interrupt_on: dict[str, bool | InterruptOnConfig] | None = None,
subagents: list[SubAgent | CompiledSubAgent] | None = None,
system_prompt: str | None = TASK_SYSTEM_PROMPT,
general_purpose_agent: bool = True,
task_description: str | None = None,
) -> None
初始化 SubAgentMiddleware。
wrap_model_call ¶
wrap_model_call(
request: ModelRequest, handler: Callable[[ModelRequest], ModelResponse]
) -> ModelResponse
更新系统提示以包含有关使用子 agent 的说明。
awrap_model_call 异步 ¶
awrap_model_call(
request: ModelRequest, handler: Callable[[ModelRequest], Awaitable[ModelResponse]]
) -> ModelResponse
(异步)更新系统提示以包含有关使用子 agent 的说明。
create_deep_agent ¶
create_deep_agent(
model: str | BaseChatModel | None = None,
tools: Sequence[BaseTool | Callable | dict[str, Any]] | None = None,
*,
system_prompt: str | None = None,
middleware: Sequence[AgentMiddleware] = (),
subagents: list[SubAgent | CompiledSubAgent] | None = None,
response_format: ResponseFormat | None = None,
context_schema: type[Any] | None = None,
checkpointer: Checkpointer | None = None,
store: BaseStore | None = None,
backend: BackendProtocol | BackendFactory | None = None,
interrupt_on: dict[str, bool | InterruptOnConfig] | None = None,
debug: bool = False,
name: str | None = None,
cache: BaseCache | None = None,
) -> CompiledStateGraph
创建一个 deep agent。
默认情况下,此 agent 将有权访问一个写入待办事项的工具 (write_todos),六个文件编辑工具:write_file、ls、read_file、edit_file、glob_search、grep_search,以及一个调用子 agent 的工具。
| 参数 | 描述 |
|---|---|
model
|
要使用的模型。默认为 Claude Sonnet 4。
类型: |
工具
|
agent 应有权访问的工具。
类型: |
system_prompt
|
agent 应有的附加说明。将包含在系统提示中。
类型: |
middleware
|
在标准中间件之后应用的附加中间件。
类型: |
subagents
|
要使用的子 agent。每个子 agent 应为一个字典,包含以下键: - `name` - `description`(由主 agent 用于决定是否调用子 agent) - `prompt`(在子 agent 中用作系统提示) - (可选)`tools` - (可选)`model`(LanguageModelLike 实例或 dict 设置) - (可选)`middleware`(AgentMiddleware 列表)
类型: |
response_format
|
用于 agent 的结构化输出响应格式。
类型: |
context_schema
|
deep agent 的模式。 |
checkpointer
|
可选的检查点,用于在运行之间持久化 agent 状态。
类型: |
store
|
可选的持久化存储库(如果后端使用 StoreBackend,则为必需)。
类型: |
backend
|
可选的文件存储后端。传递一个 Backend 实例或一个可调用的工厂,如 `lambda rt: StateBackend(rt)`。
类型: |
interrupt_on
|
可选的 Dict[str, bool | InterruptOnConfig],将工具名称映射到中断配置。
类型: |
debug
|
是否启用调试模式。传递给 create_agent。
类型: |
name
|
agent 的名称。传递给 create_agent。
类型: |
cache
|
用于 agent 的缓存。传递给 create_agent。
类型: |
| 返回 | 描述 |
|---|---|
CompiledStateGraph
|
一个配置好的 deep agent。 |