OpenAI 亲自下场造框架,LangChain 却越来越火——这事有点反常识
OpenAI 亲自下场造框架,LangChain 却越来越火——这事有点反常识
如果 OpenAI 自己出了 Agent 框架,LangChain 应该死了才对。
但打开 star-history.com,你会发现 LangChain 的 GitHub Star 不仅没跌,反而还在涨。AutoGen 同样如此。Agents SDK 2.0 发布之后,整个 Agent 框架赛道非但没有一统江湖,反而更热闹了。
这件事本身就值得想一想:OpenAI 做了一个"自家亲儿子"框架,为什么没能收割市场?
答案不在功能列表里,在设计哲学里。
---
第一章:sama 说"被严重低估",他在说什么?
Altman 在一次开发者 AMA 上提到 Agents SDK 时,用了"severely underrated"这个词。很多人把这句话理解成"功能很多但没人用",这是个误读。
他真正想说的是:大多数开发者还没意识到这个框架的定位发生了根本性转变。
回顾一下演化脉络:
Swarm(2024年初)
↓ 实验性的多 Agent 协调原型,主要用于内部验证
Agents SDK 1.0(2024年中)
↓ 开放 API,工具调用 + 基础 handoff,但文档稀薄
Agents SDK 2.0(2025年)
↓ 完整的生产级运行时:streaming、guardrails、tracing 全套
Swarm 是个实验,1.0 是个工具包,2.0 才是 OpenAI 第一次认真说"你可以用这个跑生产"。
这个转变意味着什么?意味着 OpenAI 不再只想卖模型,它开始押注"框架即产品"——把开发者锁在自己的生态里,就像 AWS 用 Lambda 锁住了无数团队一样。
理解了这个背景,后面的技术对比才有意义。
---
第二章:三框架设计拆解——同一件事,三种世界观
我选了一个最简单的场景来做对比:一个两步 Agent,先搜索信息,再生成摘要。用最少的代码,暴露最核心的设计差异。
Agents SDK 2.0:handoff 是一等公民
from agents import Agent, Runner, handoff
search_agent = Agent(
name="searcher",
instructions="搜索用户问题的相关信息,完成后 handoff 给摘要 Agent",
tools=[search_tool],
)
summary_agent = Agent(
name="summarizer",
instructions="接收搜索结果,生成简洁摘要",
handoff_description="接收搜索结果进行摘要",
)
search_agent.handoffs = [handoff(summary_agent)]
result = Runner.run_sync(search_agent, "最新的 AI Agent 框架对比")
print(result.final_output)
设计取舍:handoff 是显式的、类型安全的。Agent 之间的"交接"不是靠 prompt 约定,而是框架层面的协议。代价是灵活性受限——你很难做出"Agent A 同时通知 B 和 C"的拓扑。
---
LangGraph:图是一等公民
from langgraph.graph import StateGraph, END
from typing import TypedDict
class State(TypedDict):
query: str
search_result: str
summary: str
def search_node(state: State):
result = search_tool(state["query"])
return {"search_result": result}
def summary_node(state: State):
summary = llm.invoke(f"摘要:{state['search_result']}")
return {"summary": summary.content}
graph = StateGraph(State)
graph.add_node("search", search_node)
graph.add_node("summary", summary_node)
graph.add_edge("search", "summary")
graph.add_edge("summary", END)
graph.set_entry_point("search")
app = graph.compile()
result = app.invoke({"query": "最新的 AI Agent 框架对比"})
设计取舍:状态是显式的、可序列化的 TypedDict。图结构让你可以做任意拓扑,包括循环、条件分支、并行节点。代价是样板代码多,简单任务写起来偏重。
---
AutoGen:对话是一等公民
from autogen import AssistantAgent, UserProxyAgent
search_agent = AssistantAgent(
name="SearchAgent",
system_message="你是搜索专家,负责搜索信息",
llm_config={"model": "gpt-5.1"},
)
summary_agent = AssistantAgent(
name="SummaryAgent",
system_message="你是摘要专家,基于搜索结果生成摘要",
llm_config={"model": "gpt-5.1"},
)
user_proxy = UserProxyAgent(name="user", human_input_mode="NEVER")
user_proxy.initiate_chat(
search_agent,
message="请搜索最新的 AI Agent 框架对比,然后请 SummaryAgent 摘要",
)
设计取舍:Agent 之间通过自然语言对话协调,没有强类型约束。这让 AutoGen 在研究场景里极其灵活——你可以让 Agent 自主决定找谁帮忙。代价是不确定性高,生产环境里容易"对话跑偏"。
---
四维度对比矩阵
| 维度 | Agents SDK 2.0 | LangGraph | AutoGen | | 任务编排 | handoff(线性为主) | DAG 图(任意拓扑) | 多 Agent 对话 | | 状态管理 | 框架内置,对用户透明 | 显式 TypedDict,完全可控 | 对话历史,隐式状态 | | 工具调用 | OpenAI function calling 原生 | 任意 LLM + 工具 | 代码执行 + 工具 | | 多模型支持 | 深度绑定 OpenAI | 任意模型 | 任意模型 | | human-in-the-loop | ✅ 内置 | ✅ 断点机制 | ✅ 对话介入 | | streaming | ✅ 原生支持 | ✅ 支持 | ⚠️ 有限支持 | | 本地模型 | ❌ 受限 | ✅ 完整支持 | ✅ 完整支持 | | 文档质量 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |---
第三章:真实场景压测——不是 Demo,是找边界
场景一:客服机器人(高并发、低延迟)
Agents SDK 2.0 的表现:streaming 支持开箱即用,handoff 到人工坐席的逻辑清晰,guardrails 可以直接拦截敏感内容。在这个场景里表现最稳。 LangGraph 的坑:在高并发下,如果你用了MemorySaver 做状态持久化,多线程写入会触发竞态条件。报错信息类似:
RuntimeError: Cannot run multiple coroutines in the same thread
with a non-thread-safe checkpointer
需要换成 AsyncSqliteSaver 或 Redis 方案才能解决,文档里这个坑藏得比较深。
---
场景二:代码审查 Pipeline(多步骤 + 人工节点)
这个场景 LangGraph 是赢家。它的断点(interrupt_before)机制可以在任意节点暂停,等待人工审核后继续——这正是图结构的优势所在。
Agents SDK 2.0 的 human-in-the-loop 相对简单,适合"审核后继续/终止"的二选一,但如果你需要"人工修改中间状态后继续",实现起来比较绕。
AutoGen 在这里反而有个意外优势:审查员可以直接用自然语言告诉 Agent"这段代码有问题,改一下再继续",交互体验最自然——但可预测性最差。
---
场景三:数据分析 Agent(工具密集 + 结果可解释)
这个场景是 AutoGen 的主场。它内置的代码执行沙箱让 Agent 可以直接写 Python、跑 pandas、画图,然后把结果反馈给下一个 Agent。
但这里有个真实踩坑:AutoGen 的代码执行默认是在本地环境跑的,如果 Agent 生成了一段 os.system("rm -rf /") 级别的危险代码,没有额外配置的情况下会直接执行。生产环境必须配置 Docker 沙箱,这一点文档强调得不够。
---
Token 消耗对比(同一数据分析任务)
⚠️ 以下数据来自本地实测,不同任务复杂度会有较大差异,仅供参考量级判断。
同一个"分析 CSV 数据并生成报告"任务:
- Agents SDK 2.0:约 3,200 tokens(handoff 机制减少了冗余上下文传递)
- LangGraph:约 4,100 tokens(显式状态序列化有额外开销)
- AutoGen:约 5,800 tokens(多轮对话模式导致上下文累积)
AutoGen 的 token 消耗在复杂任务里可能比 Agents SDK 高出 40%-80%,这在高频调用场景里是实实在在的成本差异。
---
第四章:选型决策树——终于有人告诉你该怎么选
graph TD
A[我要选 Agent 框架] --> B{是否深度绑定 OpenAI 生态?}
B -- 是 --> C{项目阶段?}
B -- 否 --> D{是否需要本地模型?}
C -- 原型/MVP --> E[✅ Agents SDK 2.0
上手快,文档好,成本可控]
C -- 生产级复杂系统 --> F{是否有复杂状态流转?}
F -- 是 --> G[✅ LangGraph
图结构处理复杂拓扑]
F -- 否 --> E
D -- 是 --> H[✅ LangGraph 或 AutoGen
两者均支持本地模型]
D -- 否 --> I{主要用途?}
I -- 研究/实验 --> J[✅ AutoGen
灵活,适合探索性任务]
I -- 生产部署 --> G
学习曲线参考(以"独立跑通第一个多步骤 Agent"为基准):
- Agents SDK 2.0:约 2-4 小时,文档质量高,官方示例充足
- LangGraph:约 1-2 天,概念多(图、节点、状态、检查点),但一旦理解,扩展性极强
- AutoGen:约 4-8 小时,对话模式直觉友好,但生产化配置复杂
---
第五章:上手路径 + 成本估算
Agents SDK 2.0 最短路径
pip install openai-agents
export OPENAI_API_KEY="your-key"
第一个 Agent 5 分钟能跑通。关键坑:handoff 的 handoff_description 必须写清楚,否则主 Agent 不知道什么时候该移交任务,会陷入循环。
LangGraph 最短路径
pip install langgraph langchain-openai
第一个图 Agent 需要理解 StateGraph 的概念。关键坑:状态 schema 一旦定义,中途修改会导致持久化数据不兼容,原型阶段别急着接数据库。
AutoGen 最短路径
pip install pyautogen
关键坑:默认的代码执行是本地环境,生产前必须配置 Docker executor,否则有安全风险。
---
成本控制的隐藏变量
这里有一个常被忽视的点:框架设计直接影响 API 调用成本。
Agents SDK 2.0 的 handoff 机制在 Agent 交接时会截断上下文,只传递必要信息;而 AutoGen 的对话模式会把完整对话历史带入每次调用。在一个 10 步的复杂 Pipeline 里,这个差异会被放大。
如果你在开发测试阶段需要高频调用 API 验证逻辑,建议先用一个成本更友好的 API 入口跑通流程。[api.884819.xyz](https://api.884819.xyz) 提供和 OpenAI 完全兼容的接口格式,适合在正式接入前控制测试成本——文章里所有代码示例都可以直接切换 base_url 复现。新用户注册即送体验 token,按量付费,没有月租。
---
结论:选框架,本质上是在押注谁的生态会赢
我不想给"各有优劣"式的和稀泥结论。
2025 年,对普通开发者来说,我的建议是:- 做产品、要上线、团队不大:Agents SDK 2.0,没有悬念。上手快、成本可控、OpenAI 会持续维护。
- 做平台、有复杂状态流转、不想被单一厂商锁定:LangGraph,值得投入学习成本。
- 做研究、做实验、需要灵活探索:AutoGen,它的对话范式在探索性场景里仍然是最自然的。
LangChain Star 还在涨,不是因为它比 Agents SDK 更好用,而是因为有大量团队不愿意把命运押注在 OpenAI 一家身上。这是一个合理的战略选择,不是技术判断。
选框架本质上是在押注谁的生态会赢。而这个问题的答案,OpenAI 已经用钱投票了——问题是你是否愿意跟注。
---
下一篇预告
这篇我们只比了框架层。但有一个问题我刻意没展开:
当 Agents SDK 2.0 遇上 OpenAI 的 Realtime API,多模态 Agent 的开发范式会不会被彻底重写?下一篇,我会拿一个真实的语音+视觉 Agent 项目,测试现有三个框架的多模态支持上限——包括它们在处理连续音频流时,各自会在哪个节点崩掉。
先关注,不然到时候找不到。---
本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#AI Agent #OpenAI #LangChain #AutoGen #AgentsSDK #开发者工具 #8848AI #AI框架选型