FDE Times 数据在招 FDE 职位 838▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 66在招公司 169支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

分析

客户合同能关掉 OpenAI Agents SDK 的追踪

三款 Agent SDK 怎么选,看的不是评分表,而是客户的约束:开工前先问清四个问题。

分享微博

要点速览

  • 不要从基准测试入手,而要从四个问题入手:智能体在哪运行、用哪个模型、谁控制权限、谁来看追踪数据。
  • 如果客户在零数据保留政策下使用 OpenAI API,就无法使用 OpenAI Agents SDK 默认开启的追踪功能。如果客户团队写 Go 或 Java,ADK 对两者都有官方库,而 Claude Agent SDK 只提供 Python 和 TypeScript。
  • Claude Agent SDK 的文档对权限判定顺序写得非常精确,deny hook 先于其他所有步骤执行。ADK 自带评测智能体执行轨迹的工具。
对比表,从四个问题比较 Claude Agent SDK、OpenAI Agents SDK 和 Google ADK。运行位置:Claude 提供 Python 和 TypeScript,OpenAI 提供 Python,ADK 提供 Python、Go 和 Java(占优)。切换模型:Claude 只适合已选定 Claude 的客户,OpenAI 通过 beta 适配器支持,ADK 几乎适配任何模型(占优)。拦截工具:Claude 的 hooks 先于每一步执行(占优),OpenAI 有工具护栏,ADK 概览文档未说明。追踪:Claude 通过 hooks 实现,ADK 内置评测(占优)。橙色单元格:客户采用零数据保留政策时,OpenAI 失去追踪功能。
没有哪个 SDK 能在所有问题上胜出。每个客户约束都会排除一个选项,最大的风险是客户遵循零数据保留政策时,OpenAI Agents SDK 的追踪功能不可用。来源:文中引用的 Claude Agent SDK、OpenAI Agents SDK 和 Google ADK 文档。

OpenAI Agents SDK 的文档写明,追踪功能默认开启。同一份文档也写明,在零数据保留(Zero Data Retention)政策下使用 OpenAI API 的组织不能使用追踪功能。客户合同里的一条条款,就足以拿掉一项默认功能。

这个细节说明了真实项目中 Agent SDK 是怎么选出来的。没有人照着评分表挑选。客户提出的约束会一步步缩小候选范围。这些约束往往在第一次工作会议上就会出现,而且通常是在任何人打开编辑器之前。

对前线部署工程师(FDE)来说,这是一项值钱的能力。第一周选错框架,到第六周就得重写可观测性层、权限层,有时连模型调用层也要重写。下面四个问题可以帮助在 Claude Agent SDK、OpenAI Agents SDK 和 Google ADK 之间做取舍,并附上各自的陷阱。

智能体在哪运行,由谁运维?

先问这个问题,因为答案决定了系统出故障时谁来值班。根据 Anthropic 的文档,Claude Agent SDK 把 Claude Code 内部运行的智能体循环、工具集和上下文管理打包成了 Python 和 TypeScript 库。

智能体嵌入在你的应用中,运行在你运维的进程里。OpenAI Agents SDK 同样是用 pip 安装的 Python 库,运行在你的进程中。它还提供沙箱智能体(sandbox agents),在隔离的工作空间中执行任务。

如果客户什么都不想运维,Anthropic 另有一款产品叫 Managed Agents。这是一个托管的运行框架,负责运行智能体循环。会话既可以运行在 Anthropic 管理的云端沙箱中,也可以运行在客户基础设施上的自托管沙箱中。

和客户沟通时,务必把这两款产品分清楚。把它们混为一谈,是在数据存放位置上做出错误承诺的最快途径。

Google ADK 是开源的,设计上可以部署到任何地方。你可以把它容器化,运行在自己的基础设施上,也可以用一条命令部署到 Google Cloud。所以三者都能运行在项目团队控制的基础设施上,差别在于语言支持。

设想一家银行只允许软件运行在自有数据中心,内部团队写 Java。ADK 提供 Python、TypeScript、Go、Java 和 Kotlin 版本,所以应排在首位。

Claude Agent SDK 只提供 Python 和 TypeScript 库。对于其他语言,Anthropic 的文档建议以子进程方式运行 Claude Code CLI 并读取其 JSON 输出。这条路走得通,但客户团队就要多维护一层集成。

客户选定模型了吗,还是想保留切换的余地?

很多客户已经和某家模型厂商签了合同,另一些客户则希望保留日后切换的可能。这两类客户需要不同的建议。

OpenAI Agents SDK 通过 Any-LLM 和 LiteLLM 支持非 OpenAI 模型,但文档把这两项集成都标为 beta,只提供尽力而为的支持。

如果客户用的是其他模型,在做出任何承诺之前,你必须在项目的实际工作流上亲自验证该厂商的模型。相比之下,ADK 称自己通过针对各厂商的适配器,可以配合几乎任何生成式模型使用,而不只是 Gemini。

Claude Agent SDK 围绕 Claude Code 自己的智能体构建。最好把它看作已经确定使用 Claude 的客户的选项,而不是用来来回切换模型的一层。建议很简单:如果客户说“还没想好用哪个模型”,就不要因为团队偏好某个 SDK 而选它,然后寄希望于适配器不出问题。

谁有权拦截危险操作?

能调用工具的智能体可以做实事:写文件、调用 API、修改数据。所以客户的安全团队会问:靠什么防止它做错事?Anthropic 的文档对此回答得非常精确。

根据 Anthropic 的权限文档,每次工具调用都严格按以下顺序判定:hooks、deny 规则、ask 规则、权限模式、allow 规则,最后是 canUseTool 回调。Hooks 先于一切执行。

即使智能体处于 bypassPermissions 模式,deny hook 依然生效。对于无界面(headless)智能体,Anthropic 建议把 allowedTools 与 permissionMode “dontAsk” 结合使用,锁定允许调用的工具集合。

OpenAI Agents SDK 追求极简,只有少数几个原语:智能体、handoffs(一个智能体把工作交给另一个)、护栏(guardrails)和内置追踪。陷阱就在护栏上。输入护栏只在链条中的第一个智能体上运行,输出护栏只在最后一个智能体上运行。

设想一个由三个智能体组成的客服链条,中间那个智能体可以办理退款。如果你把检查放在输入护栏里,并以为它覆盖了整条链,那么中间的智能体根本不会被检查。

解决办法是把检查放在退款工具本身上。SDK 正好为此提供了工具护栏(tool guardrails)。根据文档,每次调用挂载了护栏的函数工具时,工具护栏都会运行:工具执行前检查输入,执行后检查输出。

在发给客户的设计文档里把这一点写清楚。客户的安全团队一定会问这个问题,你应该在他们开口之前就准备好答案。

谁来看追踪数据,如何衡量质量?

第四个问题常常拖到第二个月才被提起,那时客户会问智能体上周二为什么给出了错误答案。三款 SDK 的回答各不相同。

OpenAI Agents SDK 内置追踪,默认开启,调试很方便。但如开头所说,采用零数据保留政策的客户用不了这项功能。对这类客户,你必须从第一天起自建可观测性层。

根据 Google Cloud 的文档,ADK 内置评测工具,另有合作伙伴工具,可以检查智能体的执行轨迹。也就是说,不只检查最终答案对不对,还检查智能体走了哪些步骤。

对于必须证明智能体遵循了正确流程的客户,比如申请审批流程,这是实实在在的优势。

Claude Agent SDK 提供 hooks,可以在智能体生命周期的关键节点运行代码,另外还有会话、子智能体和 MCP。Hooks 是挂接可观测性的天然位置。

使用 Claude Agent SDK 的一种做法是:用一个 hook 把每次工具调用记录到客户的日志系统,再基于这些数据构建测试集。搭建需要一些工夫,但数据完全留在客户手里。

四个问题,三种答案

每家厂商的文档只讲自家产品。只有把它们放在同样的问题下并排比较,才能看出各自的强项在哪里,哪些地方还需要追问。

向客户提的问题 Claude Agent SDK OpenAI Agents SDK Google ADK
智能体在哪运行,由谁运维? Python/TypeScript 库,运行在项目团队运维的进程中;需要托管则用 Managed Agents Python 库,运行在项目团队的进程中,另有沙箱智能体 开源,有 Go 和 Java 版本;容器化后运行在自有基础设施或 Google Cloud 上
用哪个模型,能否切换? 围绕 Claude Code 的智能体构建 通过 beta 适配器支持非 OpenAI 模型,尽力而为 可配合几乎任何生成式模型使用
谁拦截危险操作? Hooks 先于每一步执行;deny hook 在 bypassPermissions 下依然生效 输入护栏只作用于第一个智能体,输出护栏只作用于最后一个;工具护栏在每次调用其挂载的工具时运行 概览文档未说明工具拦截机制;做出承诺前先在客户自己的工作流上测试
谁来看追踪数据,如何衡量质量? Hooks 在关键节点运行代码,可记录每次工具调用 追踪默认开启,但在零数据保留政策下不可用 内置执行轨迹评测工具

这张表不评出赢家,它展示的是哪个问题会排除哪个 SDK。如果客户受零数据保留政策约束,同时又需要可观测性,OpenAI Agents SDK 就需要再斟酌。

如果客户需要 Go 或 Java,ADK 优势明显,而 Claude Agent SDK 只能通过调用 CLI 间接使用。如果客户已经选定 Claude,安全团队要求又高,那就重点介绍 Anthropic 有明确判定顺序的权限模型。

接下来练什么

一篇教程指出,做完一个演示就停下,是为 FDE 工作学习智能体最没用的方式。

最有效的练习是用两个 SDK 构建同一个智能体,然后有意去破坏它:让一个危险工具绕过护栏、关掉追踪、换一个模型。

看岗位描述时,留意“on-prem”“data residency”“Zero Data Retention”“GCP”或“Java”这类字眼。正是这些约束决定了最终选哪个 SDK。

在简历上,与其写“熟悉 LangChain 和智能体框架”,不如写这样一行:“根据数据保留要求和工具调用权限控制需求,为文档处理智能体选定 SDK”。

这一行说明你真正和客户坐下来谈过。

框架每次发版都会变,这四个问题却变化不大。写代码之前先问这四个问题的 FDE,往往也是返工最少的人。

这篇文章对你有帮助吗?

8 个信源
路线图上的下一篇 · 阶段 3: AI 应用在客户现场,选模型看合规,不看排行榜Anthropic 以 32% 领跑企业 LLM 用量,但到了现场,决定选择的是数据放在哪、存多久、走哪份合同。