本文介绍如何使用 OpenAI Agents SDK 构建能够应对生产环境中工具调用失败率的自动化业务工作流。
AI translation, not an official translation. Refer to the original for technical details.
Adapted from @gippp69# 如何使用 GPT-6 Astra 构建由智能体驱动的企业后台系统(完整指南) 本文将详细介绍如何搭建一个能够自主处理企业日常重复性工作的智能体工作台,更重要的是,如何将其构建得足够健壮,以应对那些鲜有人提及的真实问题。 直入正题。 你读过的每一篇关于用智能体实现业务自动化的文章,描述的都是理想路径:提示词输入,工具被调用,工作完成。 但这些文章都漏掉了一个数字。 工具调用——即每个智能体与真实系统交互所依赖的机制——在生产环境中的失败率介于 3% 到 15% 之间。这不是糟糕的系统,而是工程质量良好的系统。 这才是本文的核心。不是如何启动一个智能体,而是如何构建一个在经历那 3% 到 15% 的失败之后依然能保持正确的智能体。 ## 1. 先看数字 把最后两行放在一起读。模型在实际工作上的能力大幅提升,而 OpenAI 却关闭了原本应该让这项工作变得简单的无代码构建器。SDK 活下来了。这告诉你该在哪里构建。 ## 2. 智能体工作台真正能自动化什么 不是"你的整个业务",而是四种具体形态的工作——它们是那种即使出现 3% 到 15% 的失败率也能接受的工作,因为在结果产生影响之前,会有人工审核。 **接收与分流。** 入站邮件、工单、表单、发票。智能体负责阅读、分类、提取结构化字段并路由分发。量大、单条风险低,且每条输出都是一行可供人工扫描的记录。 **文档生成。** 基于模板的合同、基于数据的报告、入职资料包。Astra 现在可以原生创建文档、表格和演示文稿,省去了以往需要的一层胶水代码。 **对账核查。** 将 CRM 中的数据与发票数据、银行数据进行比对。这是纯粹的比较性工作,智能体的职责是发现差异,而不是解决差异。 **调研与准备。** 在通话前整理账户的所有已知信息。即使遗漏了某些内容也无伤大雅,阅读报告的人知道需要自行核实。 这些工作的共同特征,也是你应该寻找的特征是:输出在不可逆之前会经过人工审核。超越这条线的自动化是另一个项目,具有不同的风险等级。而那些承诺"自动化你 80% 业务"的文章,大多悄悄跨越了这条线。 ## 3. 应对失败率的基础原语 OpenAI Agents SDK 刻意保持精简,只有三个核心原语: - 智能体(Agents):携带指令和工具的模型,运行内置循环直至任务完成 - 移交(Handoffs):允许一个智能体将任务委托给另一个智能体 - 防护栏(Guardrails):对输入和输出进行校验,与执行过程并行运行,一旦某项检查未通过则快速失败 第三个原语正是本文的核心,也是大多数构建方案所跳过的。 围绕这三个核心,还有一些对真实工作台至关重要的组件: 安装只需一行命令: Hello world 只需五行: 以上是每篇文章都会展示的部分。接下来是它们不会告诉你的部分。 ## 4. 沙箱智能体,以及为何权限才是真正的功能 SDK 的沙箱智能体将一个专项智能体运行在真正隔离的工作空间中,配备声明其可访问文件的清单、托管它的客户端,以及声明其可访问范围的能力配置:文件系统、Shell、内存、技能和压缩。API 参考文档中有专门的权限模块。 作为一句话来读:SDK 提供了一种机制,用于声明智能体不被允许触碰的内容,而这恰恰是文档中讨论最少的部分。 这不是巧合。这是无聊的那一半。但也正是这一半,决定了你 3% 到 15% 的失败率究竟是在电子表格里产生一行错误数据,还是删掉一张生产环境的表。 文档对于何时使用哪种方案说得很清楚:当你需要真实工作空间或可恢复执行时,使用 Agents SDK;当你想自己掌控循环、且任务生命周期较短时,直接使用 Responses API。 你不需要全局性地二选一。大多数真实应用会用 SDK 处理托管工作流,在底层路径上则降级使用 Responses API。 ## 5. 为何 GPT-6 Astra 改变了经济逻辑,以及其中隐藏的断崖 Astra 于 2026 年 9 月 3 日发布。对于后台业务团队而言,以下四点至关重要。 **它直接操作计算机。** OpenAI 自己的表述是:任何你能在电脑上做的事,Astra 都能替你完成。对后台而言,这意味着智能体可以打开 CRM、读取发票 PDF、填写表单,而无需针对每个系统定制集成。 **它拥有 1,050,000 个 token 的上下文窗口。** 一整天的工单、完整的合同、全部账户历史,可以一次性载入,而不是被摘要压缩。 **它能长时间运行。** 跨越数小时的多步骤工作也不会丢失上下文线索——而这正是跨三个系统进行对账的本质。 与上一代模型相比,差距绝非渐进式的。首次尝试任务完成率:Astra 88.0%,GPT-5.6 Sol 55.9%;四次尝试以内的完成率:99.2% 对 68.7%。 现在来说那个会出现在你账单上、但不会出现在发布公告里的部分。 **输入 token 超过 272,000 后,整个请求的计费规则将发生变化。** 输入和缓存费率变为 2 倍,输出费率变为 1.5 倍。注意:不是仅对超出阈值的那部分 token 收费,而是对整个请求重新计价。 多出两千个输入 token,账单几乎翻倍。一个不假思索地将"完整账户历史"塞入每次请求的团队,会持续触碰这条红线,却始终搞不清为什么每月账单看起来不对劲。 解决方案并不高明,但很实用:将工作上下文控制在阈值以内,让 session 承载那些不需要出现在提示词里的内容。这正是 sessions 层存在的意义,而且它比它所替代的上下文窗口更便宜。 ## 6. 八个智能体 每一个各司其职。做这种拆分的意义不在于扩展能力,而在于:一旦出现故障,可以归因到具体的"席位"。 让这一切得以运转的规则——也是最值得写在墙上的那条:**只有一个席位负责写入。** 七个智能体产出候选结果,一个智能体负责提交。所有不可逆操作都汇聚到同一个地方,你可以对其进行审计、限速,也可以随时关闭。 **结构化输出在这里不是可选项。** OpenAI 自己的指南明确指出:当下游代码需要类型化数据时,就使用输出类型。一个返回纯文本的起草智能体,对接一个期望接收字段的归档智能体——这就是 3% 到 15% 的失败率换了一副面孔。 注意观察指令把篇幅花在了哪里。不是花在如何把工作做好上,而是花在**当任务无法完成时,不该做什么**。 ## 7. 八步构建流程 **第一步:安装,并让一个智能体先跑起来。** 从一个智能体开始。文档对此异常直接:只有当所有权归属、工具分配、审批规则、模型选择或追踪清晰度确实有所需要时,才进行拆分。大多数失败的团队,第一天就上了八个智能体。 **第二步:在赋予工具之前,先配置结构化输出。** 当工具收到字符串却期望整数时,它会在最糟糕的时刻出现故障。先定义 Pydantic 模型,让一个智能体可靠地填充它,然后再继续推进。 **第 3 步:添加能拒绝你自己智能体的护栏。** 护栏与执行并行运行,并快速失败。这就是其设计初衷。在写入已经发生之后才运行的检查,只是一条日志记录,而非护栏。 **第 4 步:将写入智能体置于具有声明权限的沙箱中。** 归档智能体是唯一拥有写入权限的智能体,因此它是唯一需要真实工作区的智能体,也是你需要明确声明其能力的智能体。文件系统范围、shell 访问权限以及它可以访问的内容,都应是显式声明的决策,而非运行时决策。 **第 5 步:使用会话(session)而非塞入上下文。** 这是第 5 节中 272K 阈值原则的架构化表达,而非一条警告。 **第 6 步:开启追踪并认真阅读它。** 追踪功能内置于 SDK 中。它也是区分"智能体做错了某件事"与"提取器返回了 null 而起草者编造了一个值"的关键所在。没有它,每次失败看起来都像是模型太蠢,你会以编辑提示词来应对,而这几乎从不奏效。 **第 7 步:让运行在崩溃后能够恢复。** 两种方案,各自解决不同的问题。 SDK 中的沙箱会话是可恢复的,这覆盖了在自身工作区内被中断的运行。 对于编排层面的持久性,Temporal 集成将每个智能体调用作为工作流中的一个活动来运行,因此崩溃的进程会从中断处继续,而非重新运行并为整个任务重复计费。对于一次漫长的对账任务,这意味着损失四分钟与损失整个任务全部 token 开销之间的差距。 **第 8 步:划定边界,然后检查它。** 每个席位产出工作。一个席位提交工作。提交处正是你需要设置门控的地方——而这个门控不能是提示词中的一条指令,因为提示词是一个请求,而门控是一条规则。 具体到代码路径,这正是 ## 所做的事:它读取智能体生成的补丁,如果智能体修改了其章程不允许更改的内容,则拒绝该补丁。同样的原则适用于任何写入路径。声明该席位可以触及的内容。以机械方式检查它。拒绝其余内容。 --- **8. 悄无声息地扼杀这些构建的六个错误** 这些错误没有一个会自我宣告。它们会叠加恶化。 **将上下文窗口当作垃圾场而非工作内存。** 你携带的每一个 token,都是你付费的 token,也是模型必须读过去的 token。第 5 节说明了这需要付出的代价。 **在问题尚未提出要求时就过度设计架构。** 第一天就上八个智能体,其中三个的存在只是因为那样画图更好看。 **在确定性工作流能胜任时却使用智能体。** 如果步骤固定、分支已知,就写函数。智能体是为路径事先未知的情况而准备的。为一棵决策树支付模型价格,是一种选择,而非必然。 **脆弱的输出解析。** 结构化输出可以修复这个问题,但人们却不断地无视它。 **在工具循环中被动反应而非主动规划。** 循环调用一个工具,查看结果,再调用另一个。没有关于它试图完成什么的模型。这就是为什么步骤被跳过、工具被乱序调用的原因。 **从一开始就没有评估机制。** 性能退化始终不可见。你会从客户那里才得知。 最后那一点值得单独说明,因为 OpenAI 已于 2026 年 6 月 3 日关闭了 Evals 产品。测量层需要你自己搭建或另寻来源。供应商停止出售它,并不意味着你不再需要它。 ## 9. 真正行不通的场景 任何未经审查便无法撤回的操作。转账、签署、删除、发布——不是因为智能体无法执行,而是在不可逆操作上出现 3% 到 15% 的失败率,与在草稿上出现同等失败率,是截然不同的两类问题。 判断出错代价高昂、而自信却轻而易举的场合。法律解读、医疗建议,以及任何"流畅的错误答案在接收者眼中与正确答案一模一样"的领域。 没有 API、也没有稳定界面的系统。Astra 的计算机使用功能覆盖范围比点对点集成更广,但一个每周都在变更的 UI,会像破坏爬虫一样可靠地破坏浏览器智能体。 提示注入问题尚未解决。生产环境中 11.2% 的成功率(相较于此前的 23.6% 已有所改善)是真实的进步,但仍是一个必须在设计中加以考量的数字。文档显示 Astra 在这方面明显优于 GPT-5.6 Sol,但它并非免疫,而任何读取不受信任的入站文本的智能体——这正是接收类智能体所做的事——都在风险范围之内。 ## 10. 如果重头来过,我会砍掉什么 三件我不会再重复构建的东西,以及当时每一件看起来必要的原因。 **将分类器做成独立智能体。** 它读取工单并返回类型。这是一次模型调用该做的事,而不是一个拥有独立指令、独立追踪链路和独立失败模式的席位该做的事。把它拆分出来让架构图看起来更清晰,却让实际运行更慢、更难调试。一个没有工具、没有分支的席位,不过是穿着戏服的函数调用。 **把重试当成万能答案。** 第一个版本对任何失败的工具调用重试三次。这在纸面上能将 5% 的失败率变成 0.0125%,但在写入路径上,它会把一张重复发票变成三张。重试在读取场景下是正确的;对于任何涉及提交的操作,它应该是你最后添加的东西,而不是第一个,并且在加入重试计数之前,需要先有幂等键。 **一个我从未校准过的置信度分数。** 提取器返回一个 0 到 1 之间的数字,护栏拒绝任何低于 0.7 的输出。我从未验证过 0.7 意味着什么。当我最终对一百个输出与原始文档进行抽样比对时,发现模型在 0.65 时的准确率与在 0.9 时大致相当——这意味着那个阈值什么也没做,只是在随机拒绝工作。一个未经现实校准的数字,是一个看起来像控制手段的装饰品。 这三个问题背后的模式是相同的。每一个都让系统感觉更加谨慎,却没有让它变得更加正确——而这种感觉代价高昂,因为它会让你停止寻找真正有效的东西。 ## 核心观点 大多数智能体工作台失败的原因不在于模型,这已经不是新鲜事了。问题在于围绕模型构建的系统,只是为"一切顺利"的那次运行而设计的。 那 3% 到 15% 不是留待日后处理的边缘情况,它本身就是设计约束。先建护栏,再接工具;先划边界,再开写入;先做追踪,再谈规模——如此,这套工作台才能经受真实工作的考验。 跳过这些,你得到的就是所有人都会得到的结果:一个三月份令人印象深刻的演示,到六月已悄然失去信任。 来源,供任何想核实数据或直接引用的人参考。SDK 原语、沙箱权限、会话,以及有关 Responses API 与 SDK 的使用指导,均来自 OpenAI 官方 Agents SDK 文档,地址为 openai.github.io/openai-agents-python,以及代码仓库 github.com/openai/openai-agents-python。GPT-6 Astra 定价、272K 阈值、上下文大小以及首次尝试的相关数据,来自 OpenAI 的模型文档和 OpenRouter 公布的费率。Agent Builder 与 Evals 的下线日期由 OpenAI 在其自己的 AgentKit 页面上注明。3–15% 的工具调用失败率和 ChatDev 正确率数据来自已发表的生产环境实践报告;11.2% 的提示注入数据来自 Anthropic 的研究,并在同一报告中被引用。Temporal 持久执行模式的文档可在 temporal.io 查阅。六种故障模式来源于 Decoding AI 的生产智能体指南。在实操材料方面,Agents Towards Production 代码仓库汇集了 25 个教程,涵盖编排、可观测性、记忆与部署。 以上数据反映截至 2026 年 9 月已发布的内容。在此基础上进行构建前,请验证当前定价与模型行为。 如果你想看更多这类深度分析,我每隔几天会在 Telegram 和 X 上各发一篇,均免费。 X - https://x.com/gippp69 Telegram - https://t.me/GipArcAI