技术解构 2026-09-14 28 分钟阅读 进阶

OpenAI Agents SDK 架构深度解构

从 Swarm 到生产级框架 — Agent/Tool/Handoff/Guardrail/Runner 五大原语如何重塑单智能体与多智能体开发

摘要

OpenAI Agents SDK 是 OpenAI 于 2025 年推出的开源(MIT 许可)Python 与 TypeScript 智能体框架,也是 2024 年 10 月 Swarm 原型的生产级继任者。它用一组小而明确的原语——Agent、Tool、Handoff、Guardrail、Runner,再加上 Session 与内置 Tracing——把「Agent 循环、多智能体委派、安全校验、可观测性」收敛到一个低抽象层。本文拆解其运行时机制,并与 LangGraph、CrewAI、PydanticAI 做技术取舍对比。

架构全景:一等公民原语

Agents SDK 的设计哲学是「小而明确的表面」。它不试图覆盖所有Agent 模式,而是把最常复用的能力做成一等公民,其余交给用户组合。理解这套原语,是理解其架构的前提。

原语 角色 关键能力
Agent 带指令与工具的 LLM name、instructions、tools、可选 output_type、handoffs、input/output guardrails
Tool Agent 可调用能力 托管工具(WebSearch/FileSearch/Computer/CodeInterpreter)、function_tool、MCP Server、agents-as-tools
Handoff 多智能体委派 声明式 transfer_to_ 工具,由模型自主决定切换目标
Guardrail 输入/输出校验 input/output/tool 三级;tripwire 触发即中断执行
Runner 执行循环 run / run_sync / run_streamed,产出 RunResult
Session 跨轮记忆 SQLite / Redis / SQLAlchemy(Postgres) 可插拔后端
🧩 设计取舍

Swarm 原型在 2024 年 10 月验证了「Agent + Handoff」的概念,但缺少 tracing、guardrails 与生产保障。Agents SDK 保留了同样的概念模型,补齐了生产原语:内置追踪、输入/输出护栏、结构化输出、Session,以及清晰的 Runner 抽象。迁移成本因此被压到最低——简单场景主要是 API 改名加 Session/Tracing 初始化,复杂状态才需重写。

Agent 与 Tool:从函数工具到 MCP

Tool 是 Agent 与外部世界交互的边界。SDK 把工具分成几类,工程上对应不同的信任与连接方式:

🔌 模型无关性

SDK 默认走 OpenAI Responses / Chat Completions,但通过 LiteLLM 可接入 100 多个非 OpenAI 模型而不改应用架构。这意味着它并非「只能调 OpenAI」——这也是它能在企业多模型环境下落地的关键。托管 MCP 适合公开远程服务器,本地/私有 MCP 则把连接与审批留在你的运行时,这是安全边界划分的要点。

Handoff:多智能体委派的运行时

Handoff 是 SDK 多智能体机制的核心。开发者在 Agent 的 handoffs 列表里声明目标 Agent,模型在运行中自行决定何时委派;当模型调用对应的 transfer_to_ 工具时,Runner 切换当前活动 Agent。

其底层实现值得注意:切换时 SDK 会重写对话上下文,让被接管 Agent 只看到与任务相关的历史,而非此前所有 Agent 的每一轮。这一设计避免了上下文爆炸,也是与「把所有 Agent 塞进同一条长上下文」方案的本质区别。

对比而言,CrewAI 偏「角色化多智能体」、LangGraph 偏「图编排」,而 Agents SDK 的 Handoff 更接近「路由器/主管」模式——一个 Triage Agent 把请求路由给 Billing、Support、Sales 等专家 Agent。

Guardrail:与执行并行的校验网

Guardrail 是 SDK 的主要安全机制,本质是一个返回布尔结果的校验函数。它分三个作用域:

类型 运行时机 守护对象
input_guardrail 模型处理用户输入前 阻断不良提示抵达模型
output_guardrail 最终输出到达用户前 拦截有害或离题响应
tool guardrail 函数工具调用前后 校验工具入参/出参

当 GuardrailFunctionOutput 的 tripwire_triggered 为 true 时,执行立即中止并抛出异常。Input guardrail 默认与模型调用并行执行(也可用 run_in_parallel=False 改为阻塞),Output guardrail 在 Agent 产出后运行(无并行模式)。这种「廉价、快速、可短路」的校验,是构建可信 Agent 的底层骨架。

Session:跨轮持久记忆

多轮对话若每次手动拼接历史,既脆弱又易出错。Session 把对话历史、工具调用结果,以及通过 RunContextWrapper 注入的应用上下文一并持久化,并提供序列化/反序列化。

开发者也可继承 Session 实现自定义存储。Session 与 Memory 侧产品的区别在于:它解决的是「同一会话跨多次 run 的上下文连续性」,而非跨会话的长期知识沉淀——后者通常交给 RAG 或外部记忆库。

Tracing:内置可观测性

每一次 Agent 运行都会自动产生 Trace,无需额外配置(仅需 API Key)。Trace 是端到端执行的记录,Span 嵌套成树,覆盖:

默认发送到 OpenAI Traces Dashboard,也可通过自定义 TraceProcessor 导出到 Datadog、Grafana 等自有可观测栈。需要强调的是:处于零数据保留(ZDR)政策下的组织,向 OpenAI 后端的追踪不可用,必须改用自定义处理器路由到自有目的地。这是金融、医疗等强合规行业的硬性前提。

🔍 可观测性的价值

多数 Agent 框架把 tracing 当作插件或留给第三方,而 Agents SDK 让它免费且默认开启。对生产系统而言,能在一次 run 内看清「模型何时委派、工具为何失败、护栏在哪一步短路」,是排障与后续做评测(eval)的起点。官方建议:先靠 trace 理解单次运行,再把高信号样本喂给评测流程做系统化打分。

与同类框架技术对比

维度 OpenAI Agents SDK LangGraph CrewAI PydanticAI
编程模型 ReAct 循环 + 委派 图(节点 + 边) 角色化多智能体 类型安全优先
多智能体 Handoff 一等公民 图编排 内建 role 需自行编排
可观测性 内置 Tracing 需接 LangSmith 第三方便捷 可选
模型绑定 开放(LiteLLM 100+) 开放 开放 开放
典型适用 OpenAI 原生生产 复杂有状态流 快速角色协作 强类型业务

四者并非互斥。实践中常见组合是:用 Agents SDK 写 OpenAI 原生生产链路,用 LangGraph 编排含复杂状态机的长流程,用 PydanticAI 约束对正确性敏感的结构化输出。选型取决于「你的状态有多复杂、模型绑定有多松、对类型有多偏执」。

局限与适用边界

核心发现

参考来源

  1. OpenAI Developers — Agents SDK:Integrations and Observability(developers.openai.com/api/docs/guides/agents/integrations-observability)
  2. FutureAGI — What is the OpenAI Agents SDK? Loops and Handoffs in 2026(futureagi.com/blog)
  3. PromptGenius — OpenAI Agents SDK: Architecture Deep-Dive and Framework Comparison(promptgenius.net)
  4. DeepWiki — OpenAI Agents Python: Tracing and Observability(deepwiki.com/raphaelhou25/openai-agents-python)
  5. Cohorte — Mastering the OpenAI Agents SDK: A Field Guide(cohorte.co/blog)
  6. GitHub — openai/openai-agents-python(MIT 许可,Python 仓库,2026 年约 22,000 stars)