DeepAgents:框架定位与能力速览
用实例读懂 DeepAgents:三大核心机制 DeepAgents原理总结与未来展望
01
DeepAgents:框架定位与能力速览
LangGraph:提供持久化与可观测的Runtime,用于构建底层工作流与Agent。 LangChain:基于 LangGraph 的高层封装,提供更简洁的 Agent 接口(create_agent)与扩展中间件机制。 DeepAgents:在 LangChain 的高层接口 + LangGraph 的运行时之上,进一步封装形成“深度 Agent”框架。其核心方法 create_deep_agent,其实就是在 create_agent 之上增加了预置的系列中间件能力。
02
实例读懂DeepAgents:三大核心机制
...
# === 系统指令 ===
SYSTEM_PROMPT = """你是一个股票分析助手。
你的任务是帮助用户分析股票,使用 search 工具搜索相关信息。
* 工作流程:...
* 输出要求:...
"""
main_tools = [
search, # 通用网络搜索工具
]
# === 创建 DeepAgent===
agent = create_deep_agent(
model=f"openai:{OPENAI_MODEL}",
tools=main_tools,
system_prompt=SYSTEM_PROMPT,debug=True
).with_config({"recursion_limit": RECURSION_LIMIT})
...> langgraph dev
任务目标比较复杂,特别是涉及较多的步骤 用户明确提示要求LLM先规划执行
每完成一个步骤,需要修订任务清单 - 标记状态或调整任务
StateBackend:Agent的State作为存储,仅在本次线程有效。可用来在一次对话中卸载临时的中间结果,优化上下文空间。 FileSystemBackend:本地文件系统目录作为存储,可长期保存。比如保存AI生成的创作文档或代码文件。 StoreBackend:Store是LangGraph实现跨线程持久记忆的机制(可以是Redis、Postgres等实现)。你可以配置Store作为虚拟文件系统。 CompositeBackend:复合后端。比如默认使用StateBackend;但存储到"/memories/"的数据则使用StoreBackend以实现跨线程持久。
关于LangGraph Store的应用,可参考LangGraph官方文档详细了解。
...
def create_backend(runtime):
return CompositeBackend(
default=FilesystemBackend(root_dir="./fs", virtual_mode=True),
routes={
"/memories/": StoreBackend(runtime)
}
)
# === 创建 DeepAgent(无后端,无子智能体)===
agent = create_deep_agent(
model=f"openai:{OPENAI_MODEL}",
tools=main_tools,
backend=create_backend,
system_prompt=SYSTEM_PROMPT,debug=True
).with_config({"recursion_limit": RECURSION_LIMIT})SYSTEM_PROMPT = """你是一个股票分析助手。
...
- 把股票分析结果保存成/reports下面的Markdown文件
- 把用户分析过的股票名称保存到/memories/my_stocks.md中,方便下次调用
"""上下文隔离:一个复杂Agent任务需要处理大量中间步骤和信息,快速膨胀的上下文很容易干扰主线思路 。而引入子Agent,主Agent可以将具体工作“外包”后接收最终结果,自身则专注主线任务。 专长分离:不同的子Agent可以拥有不同的专业知识、提示词与工具集,为每种任务定制一个子Agent,会比一个Agent囊括所有技能更高效。
直接定义Subagent的职责、提示词、可用工具等 新建或使用已有的LangGraph工作流作为Subagent
设置三个不同的"股票分析"专家Agent:
...
# 1. 基本面分析师 - 使用股票详细信息和财务报表工具
fundamental_analyst = {
"name": subagents_config["fundamental_analyst"]["name"],
"description": subagents_config["fundamental_analyst"]["description"],
"system_prompt": subagents_config["fundamental_analyst"]["prompt"],
"tools": [
get_stock_detailed_info, # 公司详细信息(主营、概况、筹码、分红)
get_financial_statements, # 财务报表(资产负债表、利润表、现金流量表)
],
"model": f"openai:{OPENAI_MODEL}",
}
# 2. 技术面分析师 - 使用技术指标和股票价格工具
technical_analyst = {
"name": subagents_config["technical_analyst"]["name"],
"description": subagents_config["technical_analyst"]["description"],
"system_prompt": subagents_config["technical_analyst"]["prompt"],
"tools": [
get_technical_indicators, # 技术指标
get_stock_price, # 股票历史价格数据
],
"model": f"openai:{OPENAI_MODEL}",
}
# 3. 消息面分析师 - 使用新闻和研报查询工具
news_analyst = {
"name": subagents_config["news_analyst"]["name"],
"description": subagents_config["news_analyst"]["description"],
"system_prompt": subagents_config["news_analyst"]["prompt"],
"tools": [
get_stock_news, # 个股新闻
get_stock_research_report, # 机构研究报告
],
"model": f"openai:{OPENAI_MODEL}",
}
......
subagents = [fundamental_analyst, technical_analyst, news_analyst]
agent = create_deep_agent(
...
subagents=subagents
...
)03
DeepAgents原理总结与未来展望
Middleware是在LangChain1.0引入的Agent扩展机制,简单理解为:
插入到Agent主循环各个阶段的“钩子”,以调整与扩展Agent的行为逻辑。比如你可以在LLM调用前后拦截消息、替换LLM请求、总结工具结果等。
TodoListMiddleware:为Agent提供任务规划能力 FilesystemMiddleware:给Agent增加虚拟文件系统与相关工具 SubAgentMiddleware:支持子Agent,增加分工协作的运行模式
系统提示的全面可定制 更灵活的多Agent协作模式 更高级的记忆检索与遗忘机制 与知识库和RAG技术的更深度融合等等 更丰富的中间件生态
