上一篇我们介绍了 LangChain 的核心概念。这一篇,我们把目光投向 LangChain 生态中的另一个重要成员------DeepAgent,看看它和 LangChain 本体在构建 Agent 时有什么不同。
一、DeepAgent 是什么?
DeepAgent(深度智能体)是 LangChain 团队推出的一个轻量级 Agent 框架,核心理念是:用最少的代码构建一个能自主完成任务的智能体。
如果说 LangChain 是一个"全功能工具箱",那 DeepAgent 更像是一个"精装修样板间"------它预设了 Agent 的最佳实践,你只需要告诉它"做什么"和"能用什么工具"。
from langchain_deepagents import create_deep_agent
agent = create_deep_agent(
tools=[web_search, file_reader, code_executor],
system_prompt="你是一个研究助手,擅长搜索和分析信息。"
)
result = agent.invoke("帮我调研 2025 年 AI 编程助手的市场格局")
对比 LangChain 的 Agent 写法,代码量少了一半以上。
二、核心差异对比
架构思路
| 维度 | LangChain | DeepAgent |
|---|---|---|
| 设计哲学 | 模块化、可组合 | 开箱即用、约定优于配置 |
| 适用场景 | 复杂自定义流程 | 单 Agent 自主任务 |
| 学习曲线 | 中等(概念多) | 低(API 简洁) |
| 灵活性 | 高 | 中等 |
| 默认行为 | 需要显式配置 | 内置推理循环和工具调用策略 |
工具调用方式
LangChain 的 Agent 需要你定义工具列表、选择 Agent 类型(OpenAI Functions、ReAct 等)、配置执行器:
# LangChain 方式
from langchain.agents import AgentExecutor, create_react_agent
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, max_iterations=10)
DeepAgent 把这些封装好了,你只需要声明工具:
# DeepAgent 方式
agent = create_deep_agent(tools=tools, system_prompt=prompt)
错误处理和重试
LangChain 需要你自己处理异常和重试逻辑。DeepAgent 内置了:
-
自动重试(模型返回格式错误时)
-
工具调用失败时的降级策略
-
推理循环的终止条件
三、各自的实用技巧
LangChain 的技巧
1. 善用 LCEL 管道组合
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
管道语法比 Chain 类更直观,也更容易调试。
2. 用 bind_tools 统一工具调用
llm_with_tools = llm.bind_tools([search, calculator])
不同模型的工具调用接口不同,bind_tools 帮你抹平差异。
3. 用 LangSmith 做生产监控 把 LANGCHAIN_TRACING_V2=true 设为环境变量,所有调用自动记录到 LangSmith,方便排查问题。
DeepAgent 的技巧
1. 系统提示词决定一切 DeepAgent 的自主性很高,系统提示词的质量直接决定输出质量。建议包含:角色定义、能力边界、输出格式要求。
2. 工具要精不要多 给 DeepAgent 5-8 个精选工具效果最好。工具太多会增加推理负担,太少会限制能力。
3. 善用 structured output 约束输出
from pydantic import BaseModel
class ResearchReport(BaseModel):
summary: str
key_findings: list[str]
sources: list[str]
agent = create_deep_agent(
tools=tools,
output_schema=ResearchReport
)
四、怎么选?看你的场景
选 LangChain 当你需要:
-
RAG 管线:文档检索 + 问答,LangChain 的 Retriever 生态最成熟
-
多步确定性流程:每一步都明确,不需要 Agent 自主决策
-
精细控制:需要自定义每一步的输入输出
-
已有 LangChain 代码:迁移成本低
选 DeepAgent 当你需要:
-
快速原型:想法验证阶段,快速跑通一个 Agent
-
单 Agent 自主任务:调研、分析、内容生成等"开放性任务"
-
减少样板代码:不想花时间配置执行器、解析器、记忆模块
-
团队新手友好:降低 Agent 开发的门槛
一个实际案例
假设你要做一个"竞品分析 Agent":
用 LangChain: 定义搜索工具 → 定义分析提示词 → 构建搜索链 → 构建分析链 → 串联两条链 → 配置输出解析 → 处理错误 → 加日志
用 DeepAgent: 定义搜索工具 → 写系统提示词 → 创建 Agent → 调用
结果差不多,但开发时间可能差 3-5 倍。不过 LangChain 的版本在需要插入"人工审核"环节时更灵活。
五、一个常见的误区
很多人把 LangChain 和 DeepAgent 当成"二选一"的关系,其实不是。
DeepAgent 底层就是用 LangChain 的组件构建的。你可以把 DeepAgent 看作 LangChain 的一个"高级封装"。在同一个项目里,简单任务用 DeepAgent,复杂流程用 LangChain,完全可以混用。
真正的分水岭不是 LangChain vs DeepAgent,而是"简单任务 vs 复杂流程"。当你发现 DeepAgent 搞不定时------比如需要多 Agent 协作、条件分支、人工介入------就该看 LangGraph 了。