客户合同能关掉 OpenAI Agents SDK 的追踪
三款 Agent SDK 怎么选,看的不是评分表,而是客户的约束:开工前先问清四个问题。
要点速览
- 不要从基准测试入手,而要从四个问题入手:智能体在哪运行、用哪个模型、谁控制权限、谁来看追踪数据。
- 如果客户在零数据保留政策下使用 OpenAI API,就无法使用 OpenAI Agents SDK 默认开启的追踪功能。如果客户团队写 Go 或 Java,ADK 对两者都有官方库,而 Claude Agent SDK 只提供 Python 和 TypeScript。
- Claude Agent SDK 的文档对权限判定顺序写得非常精确,deny hook 先于其他所有步骤执行。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,往往也是返工最少的人。
这篇文章对你有帮助吗?
感谢你的反馈!