LangChain新利器DeepAgent完全指南
DeepAgent是LangChain的最新突破,它让我们的AI代理变得更加智能、自主和高效。通过简单的几行代码,我们就能创建一个能够自主规划、研究、生成报告的智能代理。对于已经熟悉LangChain的开发者来说,DeepAgent是一个自然的升级。它不需要重新学习整个框架,只需要了解其新增的特性和API即可。
目录
想象一下,一个能自主规划、使用工具、分解任务并撰写报告的AI助手,现在通过开源模型就能在本地运行——这就是LangChain DeepAgent带来的变革。
一、DeepAgent是什么?
如果你已经使用过LangChain的基础代理(Agent),可能会注意到它们在处理复杂、多步骤任务时的局限性。传统代理更像是“执行者”——你给一个明确指令,它调用工具完成。
而DeepAgent则进化为“规划者+执行者”的综合体。根据LangChain官方文档的介绍,DeepAgent能自动规划任务流程,智能使用文件系统管理上下文,并能在需要时创建专业子代理处理特定子任务。
简单来说,DeepAgent让AI代理具备了更接近人类的任务分解与规划能力。当你问“什么是LangGraph?”时,普通代理可能直接搜索并返回结果,而DeepAgent会:
-
制定研究计划
-
使用搜索工具收集信息
-
将大量搜索结果存储到文件中
-
分析整理信息
-
撰写结构化的报告
这种层级化、规划驱动的方法使DeepAgent特别适合研究分析、数据处理、自动化报告生成等复杂场景。
二、为什么需要DeepAgent?
在现实世界的AI应用中,简单的一问一答模式远远不够。DeepAgent的出现解决了几个关键问题:
- 上下文管理智能化:处理大量信息时,DeepAgent能自动使用文件系统工具(
write_file、read_file)来卸载和存储数据,避免超出模型的上下文窗口限制。 - 任务分解自动化:通过内置的
write_todos工具,DeepAgent能将复杂任务分解为可管理的子任务,这特别适合项目规划、多步骤研究等场景。 - 专业化子代理系统:当遇到需要特殊专业知识的子任务时,DeepAgent能动态创建和分配任务给专门优化的子代理,实现“专家团队”协作效果。
三、环境搭建
官方快速入门指南使用Anthropic或OpenAI的商业API,但我们可以通过Ollama在本地部署开源模型。以下是完整的环境配置方案:
1. 安装必要依赖
# 基础环境安装
pip install langchain deepagents
# ollama 环境
ollama pull qwen3:8b
3. 配置本地模型端点
from deepagents import create_deep_agent
from langchain_ollama import ChatOllama
# 初始化Qwen3:8b模型
llm = ChatOllama(
model="qwen3:8b",
temperature=0.3, # 较低温度以获得更稳定的规划输出
base_url="http://localhost:11434"
)
四、完整实践:构建本地研究代理
现在让我们基于官方指南的思路,构建一个完全运行在本地的研究代理:
1. 创建搜索工具(使用Tavily替代方案)
由于Tavily是商业服务,我们可以考虑替代方案或直接使用模型的内部知识:
def local_knowledge_search(
query: str,
max_results: int = 3
):
"""
本地知识搜索工具(示例)
实际应用中可替换为本地向量数据库检索
"""
# 这里是示例,实际应连接本地知识库
sample_results = [
{
"title": "LangGraph介绍",
"content": "LangGraph是LangChain用于构建有状态、多步骤工作流的框架。",
"url": "https://docs.langchain.com/oss/python/langchain/overview"
},
{
"title": "LangGraph核心概念",
"content": "包括StateGraph、节点、边等概念,支持循环和条件分支。",
"url": "https://docs.langchain.com/oss/python/langgraph/overview"
}
]
return {
"query": query,
"results": sample_results[:max_results],
"count": len(sample_results[:max_results])
}
# 文件系统工具(DeepAgent内置,这里仅作展示)
def save_to_file(content: str, filename: str):
"""将内容保存到文件"""
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
return f"内容已保存到 {filename}"
2. 创建DeepAgent研究专家
# 系统提示词,指导代理成为研究专家
research_instructions = """你是一位专业研究助理,擅长进行系统性研究并撰写高质量报告。
你具备以下能力:
1. 任务规划:将复杂研究任务分解为可执行的子任务
2. 信息搜集:使用搜索工具获取相关信息
3. 信息整理:将大量资料有序存储和整理
4. 报告撰写:基于研究成果编写结构清晰、内容准确的报告
## 可用工具
1. `local_knowledge_search`: 用于搜索相关信息
2. `save_to_file`: 将大量内容保存到文件,避免上下文过长
3. `read_file`: 读取已保存的文件内容
## 工作流程
对于每个研究任务:
1. 首先制定详细的研究计划
2. 按计划执行搜索和资料收集
3. 整理和存储重要信息
4. 综合分析所有资料
5. 撰写最终研究报告
请确保报告包含:概述、关键发现、详细分析和总结。
"""
# 创建DeepAgent实例
agent = create_deep_agent(
tools=[local_knowledge_search],
model=llm, # 使用我们配置的Qwen3:8b模型
system_prompt=research_instructions
)
3. 运行并测试代理
# 测试查询
test_query = "请研究LangGraph是什么,包括它的核心概念、用途和优势"
# 执行代理
result = agent.invoke({
"messages": [{"role": "user", "content": test_query}]
})
# 提取并显示结果
final_response = result["messages"][-1].content
print("=" * 60)
print("DeepAgent研究报告:")
print("=" * 60)
print(final_response)
# 查看代理的思考过程(如果启用了详细输出)
if "intermediate_steps" in result:
print("\n" + "=" * 60)
print("代理思考过程:")
print("=" * 60)
for step in result["intermediate_steps"]:
print(f"步骤: {step}")
五、DeepAgent与传统LangChain代理的对比
| 特性 | 传统LangChain代理 | DeepAgent |
|---|---|---|
| 任务规划 | 需要外部指导或简单提示 | 自动规划,使用write_todos工具 |
| 上下文管理 | 依赖模型有限的上下文窗口 | 智能使用文件系统工具管理大量数据 |
| 任务分解 | 基本不支持或简单拆分 | 自动创建和协调子代理处理复杂子任务 |
| 适用场景 | 简单、单步骤任务 | 复杂、多步骤、需要规划的任务 |
| 资源需求 | 相对较低 | 较高(需要更多计算和存储资源) |
六、总结
DeepAgent是LangChain的最新突破,它让我们的AI代理变得更加智能、自主和高效。通过简单的几行代码,我们就能创建一个能够自主规划、研究、生成报告的智能代理。
对于已经熟悉LangChain的开发者来说,DeepAgent是一个自然的升级。它不需要重新学习整个框架,只需要了解其新增的特性和API即可。
参考文档:https://docs.langchain.com/oss/python/deepagents/quickstart
更多推荐



所有评论(0)