OpenAI Agents SDK 0.22 适合正在把模型接到检索、工单、数据库或内部服务的开发者。它这次的重点不是增加一个新工具,而是收紧工具输出、终态失败和运行状态的处理边界。升级时,先把这三类失败路径写成回归测试,再替换依赖版本:pip install -U openai-agents==0.22.0 pytest,随后执行 pytest tests/test_agent_upgrade_contract.py -q。这样能先确认被拦截的内容不会进入可回放状态、失败不会被误当成功、并行任务的用量不会串账。
## 0.22 到底改变了什么?官方 2026 年 8 月 19 日发布的 v0.22.0 说明,运行时会从可回放、可持久化的 SDK 状态中脱敏那些被 Agent 输出护栏拒绝的终态函数工具输出。非流式 Responses 如果以 failed 或 incomplete 结束,会抛出 ModelBehaviorError;独立 RunState 检查点之间的用量统计也被隔离,同时保留嵌套 Agent 的汇总能力。这三个事实对应的不是“升级后更安全”这种笼统结论,而是三个可检查的契约:被拒绝的工具原文不能进入你的回放存储;终态失败必须显式进入错误路径;两个并行或恢复中的任务不能互相污染计量数据。
## 为什么工具输出也要做持久化回归?很多团队只检查提示词和模型最终回答,却把函数返回值原样写入追踪、会话快照或排障日志。问题是:护栏已经拒绝的输出,仍可能在另一条持久化链路中留下原文。0.22 的变更把这个边界推进到 SDK 的可回放状态,但应用侧仍应确认自己的追踪导出、审计存储和异常收集器没有额外复制原值。下面的示例是项目接入层的回归断言模板,不是 SDK 原样 API。把 persisted_snapshot 替换成你自己的会话快照或审计记录即可:pythondef assert_blocked_output_is_not_persisted(persisted_snapshot: str, raw_tool_output: str) -> None: assert raw_tool_output not in persisted_snapshotdef test_rejected_tool_output_has_no_replay_copy(): raw_tool_output = "customer-private-result" persisted_snapshot = run_and_export_after_guardrail( tool_output=raw_tool_output, guardrail_rejected=True, ) assert_blocked_output_is_not_persisted(persisted_snapshot, raw_tool_output)断言的对象应当是实际落盘或实际发送到观测系统的序列化结果,而不是内存中的临时变量。测试数据必须是脱敏的虚构值;不要为了证明测试有效而放入真实客户信息、令牌或内部地址。## 终态失败为什么不能伪装成空结果?在非流式调用中,failed 与 incomplete 是终态,不应由业务代码继续把它包装为空字符串、默认答案或“任务完成”。官方在 0.22 中让这两类终态触发 ModelBehaviorError,目的是让调用方进入明确的错误分支。应用层要做的是区分“可以重试的瞬时失败”和“需要人工或工作流决定的终态失败”。前者写入有限次数、带退避的队列;后者保留失败原因、输入摘要和关联任务 ID,并停止后续的高权限工具调用。
## 如何检查恢复任务没有串用量?长任务常常会暂停、恢复或把子任务交给另一个 Agent。若用量统计混在一起,预算告警、成本核对和任务级审计都会失去意义。0.22 的发行说明提到独立 RunState 检查点之间隔离用量,同时保留嵌套 Agent 聚合;这不等于应用可以放弃验证。建议构造两个输入不同、执行时间交叠的恢复任务,分别读回它们的检查点,再验证每个任务的用量只包含自己的模型调用。嵌套子 Agent 的聚合结果要单独断言,不能把“父任务汇总正确”误认为“两个父任务彼此独立”。
## 一套可执行的升级顺序是什么?1. 在隔离分支锁定旧版本,保存现有的正常、被拒绝和终态失败测试样本。2. 升级到 openai-agents==0.22.0,不同时改提示词、工具描述和模型版本。3. 先跑工具输出持久化、终态失败和检查点隔离三组断言,再跑现有集成测试。4. 检查追踪、日志和异常平台的导出字段,确认被拒绝的原值没有被应用侧副本带出。5. 灰度发布时按任务 ID 观察失败分支、重试次数和检查点用量;一旦偏离基线,回滚依赖并保留脱敏后的诊断记录。
## 常见问题### 这是否意味着所有工具输出都会自动脱敏?不是。官方变更针对被 Agent 输出护栏拒绝的终态函数工具输出在 SDK 可回放、持久化状态中的处理。你自己写入数据库、日志、消息队列或第三方观测平台的副本,仍应逐条检查。### 只有使用 MCP 时才需要做这些测试吗?不是。无论工具来自本地函数、HTTP 服务还是 MCP,都会经过“执行、结果、护栏、持久化、恢复”这条链路。MCP 只是让工具来源更分散,因此更需要明确权限和审计边界。### 能把这篇文章的代码直接用于生产吗?不能直接照搬。代码只展示回归断言的形状;run_and_export_after_guardrail 需要替换为你项目的真实执行和序列化适配器。生产环境还应按数据等级、工具权限、重试策略和合规要求补全审计规则。## 结语这次升级最值得带走的实践是:智能体的质量门禁不只验证“回答对不对”,还要验证失败时留下了什么、停止在哪里、恢复后是否保持独立。把三条契约写进持续集成,才能让工具调用从演示阶段走向可控的工程运行。## 来源- OpenAI Agents SDK v0.22.0 官方发行说明- OpenAI Agents SDK v0.21.1 官方发行说明- OpenAI Agents SDK v0.20.0 官方发行说明- OpenAI Agents SDK 官方文档- PyPI:openai-agents 0.22.0 发布记录
相关推荐
AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流
视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿
从瀑布到流水线:DevOps 入门与 GitLab + Jenkins + Docker 落地实践
先看清软件开发生命周期(SDLC)的全貌,再对比瀑布模型与敏捷开发,随后进入持续集成与 CI/CD 的机制内核;最后落到实操——在 GitLab、Jenkins、Docker 组成的四机实验环境里,走完源码托管、自动化构建、镜像封装与远程部署,直到参数化构建与版本回滚。概念与命令并重,既是入门地图,也是操作手册。
GD32F103程序烧录全攻略:从SWD到串口的实战指南
本文提供了GD32F103微控制器程序烧录的全面实战指南,详细介绍了SWD、JTAG和串口(ISP)三种主流下载方式。文章重点解析了在Keil MDK中使用ST-Link进行SWD下载的完整步骤,包括硬件连接、软件配置和Flash算法设置,并针对烧录过程中的常见问题提供了实用的排坑解决方案,帮助开发者高效完成程序部署。
训练数据示例
针对“规格书生成测试用例脚本”的任务,在 LLaMA-Factory 中使用即可。关键是把“规格书内容”放进input字段,把“期望的脚本输出”放进output字段。
如何从零开始写小程序
看了这篇文章,即使让我现在就从头写一个能够正常运行的小程序,也没有原本想象中的那么难了。 在本文中,我们将会以一个具体的小程序为例,带领大家从零到一完成一个小程序的开发流程,并将这个小程序上传到 FinClip.com 进行小程序提审与上架操作。 我们新建了一个叫做「HelloWorld」的小程序,FIDE 在初始化小程序项目时,会自动在项目目录中补充对应所需要的项目文件。那不妨让我们先从小程序目录下的配置文件开始,逐渐揭开小程序的面纱。 使用 FIDE 编辑小程序 1. 认识 json 文件 在小程序项目
智能车图像处理3-入门级分析2 ---直道冲刺
PS :入门级文章适合新手,如果已经有基础可以去看进阶篇文章。
DNS 不是把域名翻译成 IP:递归解析、TTL 缓存、CNAME 与报文排错实战
本文通过离线Python实验,拆解DNS递归解析、缓存机制与报文结构,揭示“DNS不是全局映射表”的本质。重点解析递归器角色、TTL衰减、CNAME链处理、负缓存隔离及修改记录延迟生效等核心问题,结合实战排错案例,阐明缓存层级、事务匹配、截断处理与安全边界,强调从应用到权威的逐层排查逻辑,实现可复现、可验证的DNS教学系统。
华为OD技术面八股文_C++_01
汇总华为OD技术面C++方向八股文真题,并提供详细解答。
【LTE L3 笔记 09】LTE物理信道-PRACH
课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》笔记为个人整理,含课件截图,仅供学习交流。
Android日志实战——车机日志获取(十五)
这个项目中的 Log 管理系统,其实只是将系统原生 Log 进行输出并导出,并没有太复杂的操作。还有一种 Log 管理系统需要对 Android 原生 Log 系统进行重写,例如我们使用 Log.d(tag, msg) 打印 Log,需要我们根据 tag 信息将不同模块的 Log 数据写入不同的本地文件下,这样可以方便不同模块查看自己的 Log,追踪异常问题。
第一百三十九回 介绍三个BLE包
本章回中主要介绍了Flutter中BLE的概念和操作方法,主要介绍了三个BLE包的功能和差异,以方便大家在BLE操作中选择不同的包。
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)
【微信小程序-uniapp】CustomPicker 自定义单项选择器组件
自定义底部弹出框单项选择器组件,适用于uniapp小程序
密码存储不是 MD5 加盐:PBKDF2、scrypt、参数升级与安全验证实战
本文通过实战演示密码存储的正确做法:摒弃MD5加盐,采用PBKDF2与scrypt等高成本密钥派生函数,结合随机盐、版本化记录与严格解析,确保离线破解成本可控。模块实现安全验证、参数校验、透明升级与统一错误处理,强调算法选择需兼顾安全性与可维护性,提供教学级密码存储方案,助力构建可迁移、可审计的认证边界。
最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版
Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
软件测试用例模板怎么写:从用例设计到执行记录的全套指南
测试用例是测试工作的核心产出,它决定测试覆盖了多少、漏掉了什么。但大多数人的测试用例写得像流水账——只有正常路径,没有异常场景;只有操作步骤,没有预期结果;只有功能测试,没有非功能测试。本文拆解测试用例的标准结构,说明每个字段的含义和写法,给出覆盖功能测试、性能测试、安全测试的完整用例范例,并列出测试用例设计的五个高频遗漏点。
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
【鸿蒙专题与实战】测试体系:单元测试、组件测试与 UI 测试
本文系统讲解鸿蒙开发中的三层测试实践:底层单元测试(用Hypium框架,优先覆盖纯函数、边界与异常)、中层ViewModel逻辑、顶层仅测3-5条关键UI路径。强调测试应“越往下写得越多”,因单元测试快且成本低,而UI测试慢易出错。通过实例说明断言拆分提升定位效率,结合覆盖率报告(hvigorwtest --coverage)发现盲区,核心是“用覆盖率找漏测,而非追求数字”。附五步落地清单:建测试文件、按优先级补用例、精简UI测试、生成报告、定位未覆盖行。下一篇将开启实战项目:从需求到上架全流程。
MCP实战06:传输实战、测试与部署
你的 MCP Server 写完了,怎么确认它真的能被宿主正确调用?这课给传输层实战三件套:MCP Inspector 可视化调试、协议级自动化测试(pytest 断言 JSON-RPC 报文结构)、stdio/HTTP 双传输部署。测试不是可选项——工具描述错一个字段宿主就调不对,你能给 Server 建起自己的回归测试。
【LTE L3 笔记 05】LTE同步信号
课程来源:B站《【2022】华为HCIA-LTE无线工程师认证学习中级视频》笔记为个人整理,含课件截图,仅供学习交流。
Go1.27升后Config.Rand怎么改测
Go1.27起tls.Config.Rand弃用;确定性测试改用testing/cryptotest.SetGlobalRandom,附仓库扫描与go test冒烟。
电芯串并联与BMS保护
串联升压、并联扩容,规则一句话,但整包能用多少由最弱的那节电芯说了算。这篇先算最弱电芯的账,再讲清三层保护,最后给对应的BMS测试用例:欠压、压差、均衡怎么测。BMS项目里有个常见场面:两台同配置的样车,电芯是同一批的,跑出来续航和限功率点却对不上。拆包量单体,一台里有一节电芯的容量比其他低了8%。整包表现被一节拖住,就是串并联的规矩在起作用。这篇先把规则和算例讲清,再讲保护分层,最后落到测试用例。
《C++ 项目:手写大模型接入 SDK》ChatGPT接口设计(中):全量响应实现和测试
本文详细实现了ChatGPTProvider对接OpenAI ResponsesAPI的全量响应sendMessage接口,涵盖模型可用性校验、请求参数解析、JSON报文组装、HTTP客户端配置(含代理与超时)、网络请求发送及响应解析全流程。通过GTest编写测试用例,发现并修复了因Content-Type重复设置导致的400错误,揭示了不同厂商网关对请求头规范的宽容度差异,最终提出一套兼容多模型服务商的标准写法,提升了代码通用性与鲁棒性。
AI提效测试实践论
11、测试结束后,必须将任务过程中所有走了弯路,多次尝试的才成功操作的最终解决办法,按1、2、3...列点追加写入到当前文件的“特别注意要点”下(必须只记一行摘要,完整内容另存 [当前AGENTS.md文件所在的目录]\details\[序号].md)(如果新纪录的要点和历史要点存在冲突,必须直接对历史要点进行修正。`测试用例` 章节下必须按用例分层组织为 `冒烟集`、`主流程集`、`边界集`、`回归集` 四个子集,并在 `用例结果汇总` 中统计各分层集的用例数量。3、是否存在BUG;没有则写“无”> |
工作流 vs 自主 Agent:5 种设计模式与 3 种建模方式详解
本文基于 Anthropic《Building Effective Agents》指南,系统梳理了AI应用中的两类核心架构:Workflow(编排式)与Agent(自主智能体)。强调“能画流程图就不上Agent”,提出从简单提示链到复杂自主决策的5种可组合工作流模式,并给出选型口诀与工程实践建议。核心观点:优先用确定性、可审计的Workflow,仅在任务路径未知时启用Agent,避免盲目复杂化。
GitHub 热榜项目:日榜(2026-11-01)
这期最集中的两个方向各有三个项目:通用技能类有 mattpocock/skills、impeccable、superpowers,多智能体工作台有 OpenMausBot、t3code、Orkas。新增星数最高的则是做跨会话记忆的 claude-mem(+1,723)。 impeccable 给编码智能体一套设计指令,bolder、critique、audit 分别管强化、评审和审计,另带 62 条确定性规则抓出模板化前端缺陷,新增 1,338 星。OpenMausBot 让每个 Bot 有独立模型、提示
Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》
本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。
计算机毕业论文系统测试怎么写:从测试用例设计到对比实验,让“工作量“看得见
本文系统阐述计算机毕业论文中“系统测试”章节的撰写方法,涵盖功能测试用例设计(等价类、边界值、判定表)、性能测试压测方案与关键指标(平均响应时间、P99、吞吐量)、对比实验设计原则及评价指标选取。强调通过量化数据、阶梯加压曲线、瓶颈定位与多维度对比,真实展现研究工作量与技术深度,提供可直接套用的测试用例表与实验方案模板,助力论文脱颖而出。
1056



被折叠的 条评论
为什么被折叠?



