跳到主要内容Deep Agents:用于复杂任务自动化的 AI 代理框架 | 极客日志PythonAI算法
Deep Agents:用于复杂任务自动化的 AI 代理框架
DeepAgents 是一个基于 LangGraph 的 Python 包,旨在简化深度 AI 智能体的构建。它通过封装规划工具、子智能体和模拟文件系统,解决了简单架构在处理复杂长期任务时的局限性。支持自定义工具集、指令及模型(如 Ollama),并可配合 MCP 使用。该框架允许开发者轻松创建具备多步骤执行和长期规划能力的智能体。
游戏玩家6 浏览 前言
说起 AI 智能体,大家可能都不陌生。用大语言模型调用工具,让它循环执行任务,这是最简单的智能体架构。但是问题来了,这种简单的架构往往很'浅',碰到复杂的、需要长期规划的任务就歇菜了。
不过最近有几个厉害的应用,比如'Deep Research'、'Manus',还有'Claude Code',它们都成功突破了这个限制。怎么做到的?答案是组合拳:规划工具、子智能体、文件系统,还有详细的提示词。
今天要介绍的 deepagents 就是把这套组合拳封装成了一个通用的 Python 包,让大家也能轻松搭建自己的'深度智能体'。
该项目主要受 Claude Code 启发,旨在使其更通用。
快速上手
安装
来个例子
先来看看怎么创建一个研究型智能体(记得先装 pip install tavily-python):
import os
from typing import Literal
from tavily import TavilyClient
from deepagents import create_deep_agent
tavily_client = TavilyClient(api_key=os.environ["TAVILY_API_KEY"])
def internet_search(
query: str,
max_results: int = 5,
topic: Literal["general", "news", "finance"] = "general",
include_raw_content: bool = False,
):
"""执行网页搜索"""
return tavily_client.search(
query, max_results=max_results, include_raw_content=include_raw_content, topic=topic
)
research_instructions = """
你是一个专业的研究员。你的任务是进行深入调研,然后写出高质量的研究报告。
你可以使用以下工具:
## `internet_search`
用这个工具可以针对特定查询进行网络搜索。你可以指定结果数量、主题类型,以及是否包含原始内容。
"""
agent = create_deep_agent([internet_search], research_instructions)
result = agent.invoke({"messages": [{"role": "user", "content": "langgraph 是什么?"}]})
是不是很简单?这里创建的智能体其实就是一个 LangGraph 图,所以你可以像操作其他 LangGraph 智能体一样使用它(支持流式输出、人机交互、记忆功能、可视化调试等)。
深度定制你的智能体
create_deep_agent 函数有三个核心参数,让你可以打造专属的深度智能体。
工具集(必填)
第一个参数是 tools,传入一个工具列表。可以是普通函数,也可以是 LangChain 的 @tool 装饰器对象。主智能体和所有子智能体都能使用这些工具。
指令(必填)
第二个参数是 instructions,这会成为智能体提示词的一部分。不过别担心,框架本身已经内置了一套系统提示词,你的指令会和它组合使用。
子智能体(可选)
通过 subagents 关键字参数,你可以定义自定义的子智能体。为什么需要子智能体?下面会详细说明。
subagents 是一个字典列表,每个字典要包含:
class SubAgent(TypedDict):
name: str
description: str
prompt: str
tools: NotRequired[list[str]]
research_sub_agent = {
"name": "research-agent",
"description": "专门用来深度研究复杂问题",
"prompt": sub_research_prompt,
}
subagents = [research_sub_agent]
agent = create_deep_agent(tools, prompt, subagents=subagents)
自定义模型(可选)
默认情况下,deepagents 使用的是 "claude-sonnet-4-20250514"。你也可以传入任何 LangChain 支持的模型。
from deepagents import create_deep_agent
from langchain_ollama import init_chat_model
model = init_chat_model(model="ollama:gpt-oss:20b")
agent = create_deep_agent(
tools=tools, instructions=instructions, model=model
)
深度智能体的核心组件
下面这些组件是 deepagents 内置的,正是它们让智能体能够处理复杂任务。
系统提示词
框架内置了一套详细的系统提示词。这套提示词主要参考了一些尝试复制 Claude Code 系统提示词的工作,但做得更通用一些。
这套提示词详细说明了如何使用内置的规划工具、文件系统工具和子智能体。没有这套提示词,智能体根本不可能有现在这么好的表现。好的提示词对于创建'深度'智能体来说,重要性怎么强调都不过分。
规划工具
内置了一个简单但有效的规划工具,灵感来自 Claude Code 的 TodoWrite 工具。这个工具本身不执行任何操作,它的作用是让智能体制定计划,然后把计划保留在上下文中,帮助智能体保持正确的执行轨迹。
文件系统工具
提供了四个内置的文件系统工具:ls、edit_file、read_file、write_file。
这些工具不是真的在操作文件系统,而是通过 LangGraph 的 State 对象模拟的。这意味着你可以在同一台机器上运行多个智能体,不用担心它们会互相干扰。
你可以通过 LangGraph 状态对象的 files 键来传入和获取文件:
agent = create_deep_agent(...)
result = agent.invoke({"messages": ...})
result["files"]
子智能体
框架内置了子智能体调用能力(同样基于 Claude Code 的设计)。
默认情况下,每个智能体都有一个 general-purpose 子智能体,它使用和主智能体相同的指令和工具。你也可以定义自定义子智能体,给它们专门的指令和工具。
- 上下文隔离:避免污染主智能体的上下文
- 专门指令:针对特定任务使用专门的提示词
配合 MCP 使用
deepagents 还可以和 MCP 工具配合使用,通过 Langchain MCP Adapter 库实现。
import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
from deepagents import create_deep_agent
async def main():
mcp_client = MultiServerMCPClient(...)
mcp_tools = await mcp_client.get_tools()
agent = create_deep_agent(tools=mcp_tools, ...)
async for chunk in agent.astream({"messages": [{"role": "user", "content": "langgraph 是什么?"}]}, stream_mode="values"):
if "messages" in chunk:
chunk["messages"][-1].pretty_print()
asyncio.run(main())
后续计划
- 允许用户完全自定义系统提示词
- 代码优化(类型提示、文档字符串、格式化)
- 更强大的虚拟文件系统
- 创建基于这个框架的深度编程智能体示例
- 对深度研究智能体示例进行基准测试
- 为工具添加人机交互支持
结语
总的来说,deepagents 把一些高级智能体应用的核心技术民主化了,让普通开发者也能轻松构建出处理复杂任务的深度智能体。如果你正在寻找一个能够进行长期规划、多步骤执行的智能体框架,不妨试试这个项目。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online