strands-agents Python SDK v1.23.0 版本解析:模型调用重试策略、钩子事件增强与多智能体稳定性升级

发布时间:2026/9/26 18:25:21

strands-agents Python SDK v1.23.0 版本解析:模型调用重试策略、钩子事件增强与多智能体稳定性升级 人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务【免费下载链接】harness-sdkBuild an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python TypeScript - any model, any cloud.项目地址https://gitcode.com/GitHub_Trending/sdkpython13/harness-sdk点击查看免费下载本篇文章基于当前仓库中 Python SDK v1.23.0 发布说明 展开系统梳理该版本在模型重试、钩子Hook体系、模型兼容性、遥测与多智能体等方向的全部变更并结合 strands-py 源码逐一佐证其底层实现。读完本文你将掌握Agent(retry_strategy...)的完整用法与指数退避原理、BeforeInvocationEvent消息注入能力、OTEL_SERVICE_NAME覆盖规则以及 Bedrock / Gemini / LiteLLM 相关修复的具体影响。版本总览一次以稳定性与可观测性为主的增量发布python/v1.23.0于 2026-01-21 发布共包含 20 条变更记录全部为**非破坏性breaking: false**更新从类型上可分为新特性feat可配置的模型调用重试策略、OTEL_SERVICE_NAME覆盖服务名、允许对AfterModelCallEvents进行 steering、多智能体钩子事件从实验性毕业缺陷修复fixMCP 会话挂起、AgentResult.__str__引文提取、Bedrock 强制工具选择时禁用思考模式、Gemini 唯一toolUseId、LiteLLM 流式响应缺失usage属性、PEP 563 与tool装饰器不兼容等其他otherS3 会话并行读取、Swarm 中断/恢复周期执行时间累积、A2A artifact 更新事件、BidiAgent 支持 Nova Sonic 2以及依赖升级与测试稳定性改进。本次发布还迎来了 8 位新贡献者maxrabin、tmokmss、okamototk、strands-agent、brycewcole、CrysisDeu、AirswitchAsa、lanazhang其中大部分贡献直接落在上面提到的模型兼容性与钩子能力上。核心新特性可配置的模型调用重试策略retry_strategyv1.23.0 最重要的功能新增是 Agent 支持通过retry_strategy参数控制模型调用遇到节流throttling等瞬时错误时的重试行为。三种配置方式从 agent.py 的构造签名可以看到retry_strategy是一个类型为ModelRetryStrategy | _DefaultRetryStrategySentinel | None的参数实际解析逻辑见 agent.py区分三种情况传入值行为不传默认 sentinel使用ModelRetryStrategy()默认参数max_attempts6, initial_delay4, max_delay240None显式禁用重试等价于ModelRetryStrategy(max_attempts1)自定义ModelRetryStrategy实例完全采用自定义的尝试次数、初始延迟与上限延迟若传入的类型不是ModelRetryStrategyAgent 会抛出ValueError(retry_strategy must be an instance of ModelRetryStrategy)进行校验。指数退避的底层实现ModelRetryStrategy 是一个基于钩子机制实现的HookProvider其核心参数与算法如下max_attempts总模型尝试次数默认 6超过后直接抛出原始异常initial_delay初始退避秒数默认 4前两次重试使用随后每次翻倍max_delay退避上限秒数默认 240防止无限拉长。延迟计算公式为min(initial_delay * (2**attempt), max_delay)因此默认配置下 5 次重试的延迟序列为4s → 8s → 16s → 32s → 64s第 6 次尝试仍失败才放弃见 _retry.py 的文档说明。钩子驱动的重试流程该策略通过register_hooks注册两个回调_retry.pyAfterModelCallEvent每次模型调用结束后触发。若event.stop_response不为空调用成功或event.exception为空则重置重试状态若异常且is_retryable()返回 True则递增尝试计数、await asyncio.sleep(delay)后置event.retry True触发重试_retry.pyAfterInvocationEvent整个 invocation 结束后重置重试状态保证跨请求不残留计数。默认的is_retryable()只识别ModelThrottledException但实现文档明确说明子类化并重写is_retryable即可在不重写整个重试策略的情况下扩展或收窄可重试异常集合_retry.py。同时 Agent 构造完成后会通过self.hooks.add_hook(self._retry_strategy)把策略注册进钩子体系agent.py。在模型路由场景中router.py 也会以HookOrder.MODEL_ROUTING顺序监听AfterModelCallEvent并在路由推进失败时调用event.agent._retry_strategy._reset_retry_state()重置状态保证与重试策略协同工作。配套测试验证test_agent_retry.py 覆盖了四个关键场景默认策略参数max_attempts6、None禁用重试等价max_attempts1、自定义参数生效max_attempts3, initial_delay2, max_delay60、以及非法类型触发ValueError。这些测试可以直接作为你使用retry_strategy时的最小示例。钩子体系增强消息可见性、事件可 steering 与多智能体事件转正BeforeInvocationEvent 暴露输入消息PR #1474 让 BeforeInvocationEvent 携带messages: Messages | None字段。该事件在Agent.__call__、Agent.stream_async、Agent.structured_output三类 API 调用开始时触发钩子可以通过就地修改messages实现内容脱敏或转换也可以通过设置cancel布尔值或字符串取消本次 invocation。这对安全审计、输入校验、隐私脱敏类钩子非常有价值——以往需要在更深的调用链中拦截输入现在在请求入口即可完成。AfterModelCallEvent 支持 steeringPR #1429 允许对AfterModelCallEventhooks/events.py进行 steering。在 strands 的 steering 机制中事件监听器可以“接管”事件结果结合本次重试策略同样基于该事件实现意味着开发者现在可以在模型调用返回后、重试判定前插入自定义逻辑——例如根据stop_reason或异常类型动态改写模型输出、注入自定义错误处理。相关实现可参见 steering 核心处理器 与 事件定义。多智能体钩子事件从实验性毕业PR #1498 将多智能体multiagent钩子事件从 experimental 状态转为正式 API。结合 PR #1478 实现的“interrupts - graph - hook based”能力v1.23.0 之后多智能体图graph场景下的中断可以由钩子事件驱动而非只能在代码中硬编码中断点。这意味着编排逻辑可以以声明式钩子的方式表达图执行的控制流更加灵活。模型兼容性修复Bedrock、Gemini 与 LiteLLMBedrock强制工具选择时禁用思考模式PR #1495 修复了 Bedrock 模型在强制tool_choice强制模型必须调用指定工具时仍可能开启思考模式thinking mode的问题。工具强制选择与思考链同时启用会破坏工具调用的确定性修复后系统在强制tool_choice场景下自动禁用思考模式保证工具调用路径的稳定。Gemini唯一 toolUseIdPR #1201 为 Gemini 模型提供唯一的toolUseId。此前 Gemini 在多次工具调用时可能出现工具使用 ID 重复导致工具结果与调用无法一一对应配合 PR #1521 引入的本地tool_use_id_to_name映射gemini - tool_use_id_to_name - localGemini 的工具调用追踪链路在本次版本中得到完整补强。LiteLLM容忍缺失的 usage 属性PR #1520 修复了通过 LiteLLM 接入模型时ModelResponseStream可能缺失usage属性的问题。流式响应并非总能携带 token 用量统计修复后相关代码路径对缺失usage采取容错处理避免在统计 token 时抛出AttributeError中断流式输出。遥测用 OTEL_SERVICE_NAME 覆盖服务名PR #1400 支持通过环境变量OTEL_SERVICE_NAME覆盖 OpenTelemetry 资源中的服务名。在 telemetry/config.py 中service_name os.getenv(OTEL_SERVICE_NAME, strands-agents).strip()即默认服务名为strands-agents设置了OTEL_SERVICE_NAME后上报到 OTLP 后端的 trace/metric 资源均会带上自定义服务名。该模块同时支持OTEL_EXPORTER_OTLP_ENDPOINTOTLP 端点 URL与OTEL_EXPORTER_OTLP_HEADERS请求头等标准环境变量config.py便于在 Kubernetes 或多租户环境中区分不同服务实例的遥测数据。多智能体与 A2ASwarm 计时修复、Nova Sonic 2 与 artifact 事件Swarm 执行时间累积PR #1502修复了多智能体 swarm 在 interrupt/resume中断/恢复周期中execution_time被重置的问题现在执行时间在多次恢复中正确累积避免“恢复后执行时间倒退”的统计失真。BidiAgent 支持 Nova Sonic 2PR #1476BidiAgent 新增对 Nova Sonic 2 语音模型的支持扩展了双向语音会话的模型覆盖面。A2A artifact 更新事件PR #1401A2AAgent-to-Agent协议交互改用 artifact update 事件传递内容使跨 Agent 内容推送语义更贴合 A2A 规范。会话存储S3SessionManager.list_messages() 并行读取PR #1186 为 S3 会话存储 的S3SessionManager.list_messages()增加了并行读取能力。当会话消息分散在多个 S3 对象时串行拉取会成为长会话的瓶颈并行读取显著缩短了历史消息的加载时间。这是对长会话、恢复断点场景直接有效的性能优化。工具与工程质量PEP 563、测试稳定性与依赖升级PEP 563 兼容性修复PR #1494修复了tool装饰器装饰的工具在启用from __future__ import annotationsPEP 563 延迟注解时的兼容性问题确保注解为字符串形式时工具 schema 的生成不受影响测试去睡眠化PR #1497将单元测试中的sleep等待替换为显式信号signaling消除测试中的隐式时序依赖降低 CI 抖动Guardrail 测试稳定性PR #1505降低 guardrail 输出脱敏redact测试的 flakiness工具链现代化PR #1336更新 ruff 配置应用 pyupgrade 规则以现代化 Python 语法为后续版本迁移到更新语法特性铺路依赖升级sphinx-rtd-theme上限从2.0.0放宽到4.0.0PR #1466websockets上限从16.0.0放宽到17.0.0PR #1451均为兼容性扩围AgentResult.__str__引文提取PR #1489__str__输出时正确从citationsContent中提取文本避免在字符串表示中暴露原始结构或造成格式化异常MCP 会话挂起修复PR #1396通过检查会话关闭状态session closure state防止 MCP 客户端在会话已关闭时继续等待杜绝 Agent 进程挂起。升级与使用建议为生产 Agent 显式配置重试默认 6 次尝试、最长 240s 退避对大多数节流场景足够若你对延迟敏感可自定义ModelRetryStrategy(max_attempts3, initial_delay1, max_delay30)收紧策略需要完全关闭重试时传retry_strategyNone接入 OpenTelemetry 时设置服务名在部署环境中配置OTEL_SERVICE_NAME环境变量配合OTEL_EXPORTER_OTLP_ENDPOINT即可在控制台按服务维度区分遥测数据钩子消费者注意消息可变性BeforeInvocationEvent.messages支持就地修改用于脱敏但修改会影响后续模型调用输入需谨慎设计升级无忧本次全部变更均为非破坏性Agent构造参数与既有钩子 API 完全向后兼容可放心升级。整体而言v1.23.0 是一次典型的“稳定性 可观测性 模型兼容性”增量发布重试策略与遥测服务名覆盖提升了生产可用性Gemini/Bedrock/LiteLLM 的修复扫清了多模型接入的隐患钩子体系与多智能体事件的能力演进则为更复杂的编排场景打开了空间。赞分享人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务【免费下载链接】harness-sdkBuild an agent harness and control it end-to-end. Open-source SDK for production AI agents in Python TypeScript - any model, any cloud.项目地址https://gitcode.com/GitHub_Trending/sdkpython13/harness-sdk点击查看免费下载相关推荐Apache DolphinScheduler 项目级别参数作用域、创建与任务使用实战指南Apache DolphinScheduler 项目级别参数作用域、创建与任务使用实战指南 本文以 Apache DolphinScheduler 的 项目级人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务WTF-Solidity 链上交易调试第三课使用 Foundry 手写 EGD Finance 价格预言机攻击 PoCWTF Solidity 链上交易调试第三课使用 Foundry 手写 EGD Finance 价格预言机攻击 PoC 本课是 WTF Solidity 仓库人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Easy-Vibe 三阶段 Vibe Coding 学习路径全解从零基础到 AI 原生产品工程师Easy Vibe 三阶段 Vibe Coding 学习路径全解从零基础到 AI 原生产品工程师 Easy Vibe 是一个面向 AI 时代产品构建者的开源编人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/26 18:20:21

C++编译器优化策略:从优化档位到未定义行为与性能实践

刚开始入行的时候,我以为“编译器优化策略”就是编译时多开几个优化选项,比如默认的 -O2、猛一点的 -O3,事情就这么简单。直到后来在项目里遇到一个诡异问题:Debug 版一切正常,Release 版却偶尔崩溃,而且崩…

2026/9/26 18:20:21

SSVEP空间滤波器算法全解析:从CCA到TRCA的Python实现与避坑指南

简介:面向脑机接口与SSVEP信号处理研究者的算法实现资料包,系统整理了以典型相关分析(CCA)为核心的空间滤波方法,涵盖标准CCA、扩展CCA、多重刺激CCA、多重通道CCA及多重数据集CCA等主流变体,并配有算法说明…

2026/9/26 18:20:21

银行大模型智能体落地实践:19个案例架构与优化指南

1. 银行大模型落地的真实进度与核心逻辑 1.1 超五成渗透率背后的行业现状 2026年这个时间节点往回看,银行行业对大模型的态度已经从“要不要做”彻底转向了“怎么做得更深”。超过半数的银行机构已经在至少一个业务条线中部署了大模型能力,这个数字在20…

2026/9/26 19:30:24

老牌安卓模拟器靠谱助手:下载安装教程与现状排查

前段时间有个朋友从网上翻出一个老牌安卓模拟器的安装包,发给我说准备在电脑上跑个旧App,让我先帮他看看这软件还能不能用。说实话,看到“靠谱助手”这个名字的时候我愣了一下——在网易MuMu、雷电模拟器这些后起之秀把市场挤成红海的今天&am…

2026/9/26 19:30:24

Steam必玩神作盘点:从艾尔登法环到星露谷,找到你的本命游戏

1. 为什么“最好玩”这件事值得认真盘点每次有人问我“Steam上到底什么游戏值得玩”,我都不会直接甩一个榜单过去。原因很简单:好玩是一个极度主观的词,跟你的游戏阅历、可投入时间、设备配置、甚至最近的心情都有关系。一个刚接触单机游戏的…

2026/9/26 19:30:24

UI技能全景图:从视觉设计到工程实现的12大核心技能

1. 序言:为什么UI从业者需要一张“技能全景图”UI设计与实现,一直是个看起来门槛不高、但真正做深了又极其庞杂的领域。很多人从Photoshop或Sketch开始,画了几个页面就觉得已经入门,可真到了实际项目中,遇到的却是另一…

2026/9/26 19:30:24

Southmap5.0:面向测绘生产的点云驱动成图引擎

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 21:00:17

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/25 20:59:52

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/26 0:04:28

画质修复APP怎么选?Wink影像修复能力与产品实力解析

现如今手机拍摄场景愈发丰富,演唱会直拍、漫展记录、老视频翻新、日常vlog录制,都会遇到画面模糊、噪点多、曝光失衡等问题,不少用户在挑选工具时比较在意一款画质修复APP能够兼顾修复效果与自然质感。Wink作为美图公司推出的全球化AI影像增强…

2026/9/26 0:04:28

超低能耗建筑K值要求能否满足?浙东铝业建筑型材解析

核心摘要浙东铝业的超低能耗系统门窗产品,资料显示保温性能可达 K≤1.4W/(㎡K),能够对应上海地区超低能耗住宅对门窗保温性能的应用需求。判断建筑是否满足超低能耗要求,不能只看铝型材本身,还需要结合玻璃、隔热条、密封系统、开…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/25 18:41:36

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑