content(sxbh-quickwins): 统一 6 处口径 + favicon/404 + sitemap 补25 + 195 页 canonical + 59 篇 description
This commit is contained in:
@@ -0,0 +1,334 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Agent框架演化三部曲:LangChain → LangGraph → DeepAgents 的技术跃迁与选型逻辑</title>
|
||||
<style>
|
||||
:root{--bg:#faf9f8;--fg:#1a1a1a;--accent:#2d5a8e;--border:#e0ddd9;--code-bg:#f0efe9;--green:#3a7d44;}
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:"Noto Serif SC","Source Han Serif SC",Georgia,serif;background:var(--bg);color:var(--fg);line-height:1.9;padding:40px 20px}
|
||||
.container{max-width:760px;margin:0 auto}
|
||||
h1{font-size:1.8em;font-weight:700;line-height:1.35;margin-bottom:6px}
|
||||
.subtitle{font-size:0.95em;color:#666;margin-bottom:30px;border-bottom:2px solid var(--accent);padding-bottom:15px}
|
||||
h2{font-size:1.3em;font-weight:600;margin:30px 0 12px;color:var(--accent);padding-bottom:6px;border-bottom:1px solid var(--border)}
|
||||
h3{font-size:1.05em;font-weight:600;margin:20px 0 8px;color:#444}
|
||||
p{margin:0 0 14px;text-align:justify}
|
||||
pre{background:var(--code-bg);padding:14px 16px;border-radius:6px;overflow-x:auto;font-size:0.82em;line-height:1.5;margin:14px 0;border:1px solid var(--border)}
|
||||
code{background:var(--code-bg);padding:1px 4px;border-radius:3px;font-size:0.88em}
|
||||
table{width:100%;border-collapse:collapse;margin:14px 0;font-size:0.88em}
|
||||
th,td{border:1px solid var(--border);padding:7px 10px;text-align:left}
|
||||
th{background:var(--code-bg);font-weight:600}
|
||||
blockquote{border-left:3px solid var(--accent);margin:14px 0;padding:8px 16px;background:var(--code-bg);border-radius:0 4px 4px 0;font-size:0.92em}
|
||||
.tag{display:inline-block;background:var(--accent);color:#fff;font-size:0.7em;padding:2px 10px;border-radius:12px;margin-right:5px}
|
||||
.green{color:var(--green)}
|
||||
.fig{margin:16px 0;padding:14px;background:var(--code-bg);border-radius:6px;text-align:center;font-size:0.88em;color:#555;border:1px dashed var(--border)}
|
||||
.footer{margin-top:40px;padding-top:16px;border-top:1px solid var(--border);font-size:0.82em;color:#888;text-align:center}
|
||||
</style>
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"headline": "Agent框架演化三部曲",
|
||||
"description": "AI AgentLangChainLangGraphDeepAgents技术选型",
|
||||
"articleSection": "BotOS 实践",
|
||||
"datePublished": "2026-07-23",
|
||||
"author": {
|
||||
"@type": "Organization",
|
||||
"name": "博海视角"
|
||||
},
|
||||
"inLanguage": "zh-CN"
|
||||
}
|
||||
</script>
|
||||
<link rel="canonical" href="https://sxbh.ltd/articles/agent-framework-evolution.html">
|
||||
<link rel="icon" href="/favicon.ico" sizes="any">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
|
||||
<meta name="description" content="Agent框架演化三部曲:LangChain → LangGraph → DeepAgents 的技术跃迁与选型逻辑:Agent框架演化三部曲:LangChain → LangGraph → DeepAgents 的技术跃迁与选型逻辑 陕西博海网络科技有限公司(原定边县博海网络科技,2001-…">
|
||||
</head>
|
||||
<body>
|
||||
<div class="site-id" style="max-width:760px;margin:0 auto 24px;padding:12px 16px;background:#f8f6f3;border:1px solid #e0ddd9;border-radius:8px;font-size:12px;line-height:1.8;color:#666;">
|
||||
陕西博海网络科技有限公司(原定边县博海网络科技,2001-03-07成立)<br>
|
||||
统一信用代码 91610825713571436B · 定边二道西街房管所楼下 · 联想金牌服务商<br>
|
||||
本文属"BotOS 实践"专栏,为博海网络科技产品与案例内容
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<h1>Agent框架演化三部曲</h1>
|
||||
<div class="subtitle">LangChain → LangGraph → DeepAgents 的技术跃迁与选型逻辑</div>
|
||||
<div style="margin:16px 0;padding:8px 14px;background:#f5f5f5;border-left:3px solid #ccc;color:#888;font-size:0.85em;border-radius:0 4px 4px 0;">🤖 本文由 AI 辅助生成,内容经人工审核发布</div>
|
||||
|
||||
<p><span class="tag">AI Agent</span><span class="tag">LangChain</span><span class="tag">LangGraph</span><span class="tag">DeepAgents</span><span class="tag">技术选型</span></p>
|
||||
|
||||
<h2>一、为什么Agent框架需要演化</h2>
|
||||
|
||||
<p>大语言模型本质上是文本补全机器——给定输入,预测下一个token。但真正有用的AI助手需要的远不止"说话":它需要思考、记忆、调用工具、管理状态,在多轮交互中完成复杂任务。这就是Agent框架要解决的问题:在LLM之上构建一个完整的认知循环。</p>
|
||||
|
||||
<p>从2023到2026年,这一认知循环的实现方式经历了三次范式跃迁:</p>
|
||||
|
||||
<div class="fig">
|
||||
<strong>Agent框架演化时间线</strong><br>
|
||||
2023 ── LangChain ── "万物皆链",10分钟跑通Demo<br>
|
||||
2024 ── LangGraph ── "有向图",Agent可以可靠运行<br>
|
||||
2025 ── DeepAgents ── "自治编排",Agent管理Agent
|
||||
</div>
|
||||
|
||||
<p>这不是"谁取代谁"的替代关系,而是层叠演进——DeepAgents构建在LangGraph之上,LangGraph构建在LangChain之上。理解这三层的设计哲学、能力边界和适用场景,是2026年做Agent技术选型的必修课。</p>
|
||||
|
||||
<h2>二、第一代:LangChain——万物皆链</h2>
|
||||
|
||||
<h3>2.1 设计哲学</h3>
|
||||
|
||||
<p>LangChain的核心理念可以概括为四个字:万物皆链。它将LLM应用的构建流程抽象为一条标准化流水线:</p>
|
||||
|
||||
<pre>
|
||||
PromptTemplate → LLM → OutputParser
|
||||
↓ ↓ ↓
|
||||
Chain[0] Chain[1] Chain[2]
|
||||
</pre>
|
||||
|
||||
<p>核心抽象包括:Chain(多步串联执行)、AgentExecutor(循环调用LLM+工具直到完成)、Tool(外部能力接口)、Memory(多轮上下文)、Retriever(外部数据检索)。</p>
|
||||
|
||||
<h3>2.2 典型实现</h3>
|
||||
|
||||
<pre>
|
||||
from langchain.agents import create_agent
|
||||
|
||||
def get_weather(city: str) -> str:
|
||||
"""查询指定城市的天气"""
|
||||
weather_data = {"北京": "晴朗 25°C", "上海": "多云 28°C"}
|
||||
return weather_data.get(city, f"{city} 晴")
|
||||
|
||||
agent = create_agent(
|
||||
model="anthropic:claude-sonnet-4-6",
|
||||
tools=[get_weather],
|
||||
system_prompt="你是天气助手",
|
||||
)
|
||||
result = agent.invoke({"messages": [{"role": "user", "content": "北京天气?"}]})
|
||||
</pre>
|
||||
|
||||
<p>底层执行流程:用户提问→模型推理(判断需调工具)→工具执行→生成回答。10行代码跑通一个Agent Demo——LangChain降低了Agent开发的门槛。</p>
|
||||
|
||||
<h3>2.3 设计贡献</h3>
|
||||
|
||||
<p>LangChain对Agent生态的最大贡献不是某个具体功能,而是三件事:标准化了LLM应用的构建模式(Prompt→LLM→Parse→Tool→Repeat);统一了工具接口(任意Python函数通过@tool装饰器变成Tool);普及了ReAct模式("思考-行动-观察"循环成为行业共识)。</p>
|
||||
|
||||
<h3>2.4 局限性</h3>
|
||||
|
||||
<table>
|
||||
<tr><th>局限</th><th>具体表现</th><th>实际影响</th></tr>
|
||||
<tr><td>隐式状态</td><td>AgentExecutor内部维护scratchpad,开发者看不到也控不了</td><td>调试困难,无法回溯</td></tr>
|
||||
<tr><td>线性执行</td><td>Chain只能顺序执行,不支持条件分支和循环</td><td>复杂工作流无法表达</td></tr>
|
||||
<tr><td>无持久化</td><td>状态存在内存中,进程崩了就丢了</td><td>生产环境不可接受</td></tr>
|
||||
<tr><td>无人介入</td><td>没有Human-in-the-Loop机制</td><td>敏感操作无法审批</td></tr>
|
||||
</table>
|
||||
|
||||
<p>这些局限决定了LangChain的范式天花板:它是原型验证阶段的利器,但当Agent进入生产环境时,需要新的架构。</p>
|
||||
|
||||
<h2>三、第二代:LangGraph——显式状态 + 有向图</h2>
|
||||
|
||||
<h3>3.1 核心洞察</h3>
|
||||
|
||||
<p>LangGraph的诞生源于一个根本性的洞察:Agent的执行流程不是链,而是图。一个真正的生产级Agent在工作时,可能需要根据条件走不同路径(条件分支),工具调用失败时回退重试(循环),在关键节点等待人工审批(中断/恢复),崩溃后从上次断点继续(持久化)。这些问题用链式结构都无法优雅表达。</p>
|
||||
|
||||
<h3>3.2 设计哲学:状态是一等公民</h3>
|
||||
|
||||
<p>LangGraph将状态提升为一等公民。其核心组件包括:State(TypedDict)—显式类型安全的状态对象;Node(函数)—图中的处理节点;Edge(条件/无条件)—节点间连接;Checkpointer—状态持久化(Postgres/Redis/SQLite);Interrupt—人工介入断点。</p>
|
||||
|
||||
<div class="fig">
|
||||
<strong>LangChain vs LangGraph 核心设计差异</strong><br>
|
||||
<table>
|
||||
<tr><th>维度</th><th>LangChain</th><th>LangGraph</th></tr>
|
||||
<tr><td>状态</td><td>隐藏在AgentExecutor内部</td><td>显式TypedDict,每个节点都能读写</td></tr>
|
||||
<tr><td>执行路径</td><td>固定线性链</td><td>条件分支、循环、并行</td></tr>
|
||||
<tr><td>持久化</td><td>内存临时状态</td><td>Checkpointer持久化到DB</td></tr>
|
||||
<tr><td>生命周期</td><td>跑完就跑完</td><td>中断、恢复、时间旅行</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>3.3 典型实现</h3>
|
||||
|
||||
<pre>
|
||||
from langgraph.graph import StateGraph, MessagesState, START, END
|
||||
|
||||
def mock_llm(state: MessagesState):
|
||||
return {"messages": [{"role": "ai", "content": "Hello from LangGraph!"}]}
|
||||
|
||||
graph = StateGraph(MessagesState)
|
||||
graph.add_node("mock_llm", mock_llm)
|
||||
graph.add_edge(START, "mock_llm")
|
||||
graph.add_edge("mock_llm", END)
|
||||
graph = graph.compile()
|
||||
|
||||
result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}]})
|
||||
</pre>
|
||||
|
||||
<p>这段代码看似比LangChain还长,但它的核心优势不在"写起来短",而在"执行起来可靠"。Checkpointer让状态持久化,Interrupt让人能在关键节点介入,Subgraph让复杂工作流可以模块化拆分。</p>
|
||||
|
||||
<h3>3.4 生产验证</h3>
|
||||
|
||||
<p>截至2026年,LangGraph已被LinkedIn(人才推荐Agent)、Uber(客服自动化)、Klarna(合规审批流程)、J.P.Morgan(金融服务Agent)等多家大厂在生产环境验证。v1.0已于2025年10月发布LTS版本。</p>
|
||||
|
||||
<h2>四、第三代:DeepAgents——自治Agent编排</h2>
|
||||
|
||||
<h3>4.1 核心思路</h3>
|
||||
|
||||
<p>LangGraph解决了"如何精确控制Agent"的问题,但引入了新的挑战:开发者需要手动设计图的每个节点和边。DeepAgents的核心思路是:把图的构建也交给AI。</p>
|
||||
|
||||
<div class="fig">
|
||||
<strong>三个范式对开发者介入的要求</strong><br>
|
||||
LangChain: 开发者写链 → LLM在链中执行<br>
|
||||
LangGraph: 开发者画图 → LLM在图中执行<br>
|
||||
DeepAgents: 开发者定义目标 → LLM自己画图、自己执行
|
||||
</div>
|
||||
|
||||
<h3>4.2 关键能力:子Agent委派</h3>
|
||||
|
||||
<p>DeepAgents解决的核心问题是上下文膨胀。当一个Agent执行复杂任务时,上下文窗口会被工具调用结果、中间推理、历史消息逐渐填满。一旦接近模型上下文窗口限制(如200K tokens),LLM的推理质量急剧下降。</p>
|
||||
|
||||
<p>子Agent的解决方案:主Agent保持精简上下文,子任务分派给隔离的子Agent独立执行,完成后只返回摘要给主Agent。每个子Agent拥有独立的上下文窗口,这样主Agent的上下文始终保持精简。</p>
|
||||
|
||||
<h3>4.3 典型实现</h3>
|
||||
|
||||
<pre>
|
||||
from deepagents import create_deep_agent
|
||||
|
||||
def get_weather(city: str) -> str:
|
||||
return f"{city} 今日晴朗,25°C"
|
||||
|
||||
def search_web(query: str) -> str:
|
||||
return f"关于'{query}'的搜索结果..."
|
||||
|
||||
agent = create_deep_agent(
|
||||
model="anthropic:claude-sonnet-4-6",
|
||||
tools=[get_weather, search_web],
|
||||
system_prompt="你能自主规划任务并使用工具。",
|
||||
)
|
||||
|
||||
result = agent.invoke({
|
||||
"messages": [{"role": "user",
|
||||
"content": "查北京天气,然后搜周末户外活动"}]
|
||||
})
|
||||
</pre>
|
||||
|
||||
<p>与LangGraph的关系:create_deep_agent()返回的就是一个编译好的LangGraph图,因此可以无缝使用LangGraph的所有底层能力(流式输出、Checkpointer持久化、中断/恢复等)。</p>
|
||||
|
||||
<h3>4.4 代价:Token开销</h3>
|
||||
|
||||
<p>DeepAgents的自动规划、子Agent通信、上下文摘要都需要额外的LLM调用。有分析指出,相比手动编排,DeepAgents的token消耗可能高达20倍。这是"便利性vs成本"的经典trade-off。</p>
|
||||
|
||||
<table>
|
||||
<tr><th>维度</th><th>LangGraph(手动)</th><th>DeepAgents(自动)</th></tr>
|
||||
<tr><td>开发成本</td><td>高(需手动设计图)</td><td>低(定义目标即可)</td></tr>
|
||||
<tr><td>Token成本</td><td>低(精确控制)</td><td>高(约20x)</td></tr>
|
||||
<tr><td>控制粒度</td><td>极高</td><td>中等</td></tr>
|
||||
<tr><td>适用场景</td><td>确定性工作流</td><td>探索性/自治任务</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>五、三层架构全景对比</h2>
|
||||
|
||||
<h3>5.1 定位关系</h3>
|
||||
|
||||
<div class="fig">
|
||||
<pre>
|
||||
DeepAgents (Harness层)
|
||||
预置工具、自动规划、子Agent、文件系统
|
||||
┌─────────────────────────────────────┐
|
||||
│ LangGraph (Runtime层) │
|
||||
│ 持久化、流式、人机协同、状态管理 │
|
||||
│ ┌─────────────────────────────────┐ │
|
||||
│ │ LangChain Core (Framework层) │ │
|
||||
│ │ 模型集成、工具抽象、Prompt管理 │ │
|
||||
│ └─────────────────────────────────┘ │
|
||||
└─────────────────────────────────────┘
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<h3>5.2 能力对照</h3>
|
||||
|
||||
<table>
|
||||
<tr><th>能力</th><th>LangChain</th><th>LangGraph</th><th>DeepAgents</th></tr>
|
||||
<tr><td>定位</td><td>开发框架</td><td>运行时</td><td>驾驭框架</td></tr>
|
||||
<tr><td>核心范式</td><td>链</td><td>有向图</td><td>自治编排</td></tr>
|
||||
<tr><td>状态管理</td><td>隐式</td><td>显式TypedDict</td><td>自动虚拟文件系统</td></tr>
|
||||
<tr><td>持久化</td><td>无</td><td>Checkpointer</td><td>继承LangGraph</td></tr>
|
||||
<tr><td>人机协同</td><td>无</td><td>interrupt</td><td>继承+interrupt_on</td></tr>
|
||||
<tr><td>子Agent</td><td>无</td><td>手动子图</td><td>自动委派</td></tr>
|
||||
<tr><td>自动规划</td><td>无</td><td>无</td><td>write_todos</td></tr>
|
||||
<tr><td>Token效率</td><td>高</td><td>高</td><td>低(约20x)</td></tr>
|
||||
<tr><td>学习曲线</td><td>低</td><td>中</td><td>低</td></tr>
|
||||
<tr><td>适合阶段</td><td>原型验证</td><td>生产部署</td><td>自治Agent</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>六、选型逻辑</h2>
|
||||
|
||||
<h3>6.1 快速决策树</h3>
|
||||
|
||||
<pre>
|
||||
是否需要Agent自主规划和分解任务?
|
||||
├── 是 → DeepAgents
|
||||
│ └── 对Token成本敏感?→ LangGraph手动编排
|
||||
└── 否 → 需要人工审批/持久化/断点续传?
|
||||
├── 是 → LangGraph
|
||||
└── 否 → 只是"模型+工具"简单循环?
|
||||
├── 是 → LangChain
|
||||
└── 否 → LangGraph
|
||||
</pre>
|
||||
|
||||
<h3>6.2 推荐演进路径</h3>
|
||||
|
||||
<p>实际项目中,三者不是非此即彼的选择。推荐的演化路径是:先用LangChain快速验证想法,理解Agent的基本工作模式;当Agent需要进入生产环境时,下沉到LangGraph获取可靠性和精细控制;当任务足够复杂时,升级到DeepAgents使用预置的自治能力。</p>
|
||||
|
||||
<p>最常见的是分层使用:应用层用DeepAgents(高层编排),编排层用LangGraph(关键工作流),基础层用LangChain Core(模型集成和工具抽象)。</p>
|
||||
|
||||
<h2>七、对照:另一种路线的启示</h2>
|
||||
|
||||
<p>本文讨论的是LangChain系的技术路线。在主流路线之外,还有另一条值得关注的Agent架构路线——以Hermes Agent(Nous Research)为代表的"指挥位"路线。Hermes Agent不依赖LangChain/LangGraph的技术栈,而是通过自进化技能、MoA混合模型、MCP双端协议和8+Profile的多Agent调度来实现类似DeepAgents的子Agent委派能力。</p>
|
||||
|
||||
<p>两条路线的核心差异在于:LangChain系追求"框架标准化"——用一套统一的抽象覆盖尽可能多的场景;Hermes系追求"架构轻量化"——用自进化机制让系统在使用中自己变强。前者适合需要标准化交付的工程团队,后者适合需要高度定制的独立开发者和小团队。</p>
|
||||
|
||||
<p>选哪条路,取决于你的场景是在"重复造轮子"还是"不需要那个轮子"。</p>
|
||||
|
||||
<h2>八、总结</h2>
|
||||
|
||||
<p>Agent框架的演化路径折射出AI工程化从野蛮生长走向成熟的过程。三年三次范式跃迁,环环相扣:2023年LangChain解决了"人人都能造Agent"的入门问题;2024-25年LangGraph解决了"Agent可以可靠运行"的生产问题;2025-26年DeepAgents正在解决"Agent可以管理Agent"的规模化问题。</p>
|
||||
|
||||
<p>几个关键认知:三者不是竞争关系,是层叠协作关系;AgentExecutor已死,LangGraph当立;DeepAgents的20x Token代价真实存在;没有银弹,只有合适。</p>
|
||||
|
||||
<p>未来的趋势是:Agent基础设施的标准化(持久化、审批、可观测性成为标配),多Agent协作从手动编排走向自动编排,成本优化通过更智能的上下文管理和模型路由来改善。也许不久的将来,Agent会自己决定用什么工具、走什么流程、调用哪个子Agent——而框架本身,就像操作系统一样变得透明。</p>
|
||||
|
||||
<div class="footer">
|
||||
一切皆如 · 2026年7月<br>
|
||||
陕西博海网络科技
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"@id": "https://sxbh.ltd/#organization",
|
||||
"name": "陕西博海网络科技有限公司",
|
||||
"url": "https://sxbh.ltd",
|
||||
"taxID": "91610825713571436B",
|
||||
"legalName": "陕西博海网络科技有限公司",
|
||||
"foundingDate": "2001-03-07",
|
||||
"address": {
|
||||
"@type": "PostalAddress",
|
||||
"streetAddress": "定边二道西街房管所楼下",
|
||||
"addressLocality": "定边县",
|
||||
"addressRegion": "榆林市",
|
||||
"addressCountry": "CN"
|
||||
},
|
||||
"brand": {
|
||||
"@type": "Brand",
|
||||
"name": "联想金牌服务商"
|
||||
},
|
||||
"areaServed": ["定边县", "榆林市"]
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user