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 方案才能解决,文档里这个坑藏得比较深。

AutoGen 的问题:对话模式在客服场景里的延迟比较高——每次 Agent 交接都要走一轮完整的 LLM 推理来"理解"上下文,token 消耗也因此偏高。

---

场景二:代码审查 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框架选型