ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

strands SDK Python v0.2.0 技术解读:迭代式事件循环、Agent State、多模型推理与可观测性升级

strands SDK Python v0.2.0 技术解读:迭代式事件循环、Agent State、多模型推理与可观测性升级 人工智能大模型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点击查看免费下载导读本文围绕 strands SDK Python 分支 v0.2.0 版本的发布变更展开系统梳理该版本在 Agent 执行模型、结构化输出、模型接入、可观测性与内部架构上的关键演进。读者将掌握新引入的迭代式事件循环与迭代式 Agent 用法、Agent State 状态管理的语义、Mistral / OpenAI reasoning 内容等模型层能力、tracer 重构后的自定义配置方式以及本次破坏性变更移除 FunctionTool对升级的影响。文中所有结论均以当前仓库源码与配置为佐证。版本总览strands SDK 的 Python 分支在 v0.2.02025-07-02 发布完成了从一次性调用到可迭代、可状态化执行模型的转变。本次版本的核心主题可以概括为四类迭代式执行模型事件循环event loop、Agent 与结构化输出全部迭代化Agent 状态Agent StateAgent 携带可序列化状态跨会话运行模型层扩展新增 Mistral 支持、OpenAI 推理内容reasoning content、Bedrock 常见错误补充异常信息、boto3 会话区域复用可观测性与内部清理tracer 重构、自定义 tracer provider、GenAI 语义约定更新、移除 FunctionTool 等破坏性变更。该版本同时迎来了两位新贡献者siddhantwaghjale 与 RingoIngo2涉及 A2A tools as skills 与模型并发请求 debug 日志两项功能。包的版本由 git tag 驱动tag_regex ^python/v(?Pversion.)$见 strands-py/pyproject.toml。迭代式执行模型事件循环、Agent 与结构化输出的统一迭代化v0.2.0 最核心的架构变化是 PR #268、#291、#295、#328 共同将执行链路改造为迭代器iterator驱动迭代式事件循环iterative event loopPR #268Agent 主循环被重构成可逐步推进的迭代过程调用方可以按需拉取事件流而不是被动等待整个回合结束迭代式 Agentiterative agentPR #295Agent 本身支持迭代式执行允许在回合之间注入控制逻辑迭代式结构化输出iterative structured outputPR #291结构化输出流程同样改为迭代器语义配合 Mistral 的structured_output迁移PR #305见 strands-py/src/strands/models/mistral.py实现统一的流式体验executor 工具运行改为 yieldPR #328工具执行器executor - run tools - yield工具结果以生成器方式产出进一步强化整条链路的流式特性。从源码看Agent.run的内部实现调用self._execute_event_loop_cycle(...)循环推进事件循环见 strands-py/src/strands/agent/agent.pyStructuredOutputContext在每次调用中注册并清理结构化输出工具。这意味着 v0.2.0 之后开发者可以用标准的 Python 迭代/异步迭代方式消费 Agent 产生的中间事件为流式 UI、逐步调试和细粒度控制打开了空间。Agent State可序列化的状态管理PR #292 引入Agent StatePR #334 将相关单元测试整合。当前仓库中AgentState定义为JSONSerializableDict的类型别名见 strands-py/src/strands/agent/state.py是 Agent 构造参数之一。Agent构造函数接受state: AgentState | dict | None见 strands-py/src/strands/agent/agent.py传入AgentState对象时直接使用传入普通 dict 时包装为AgentState(state)其他类型抛出ValueError(state must be an AgentState object or a dict)见 strands-py/src/strands/agent/agent.py缺省时初始化为空AgentState()。在会话恢复场景中Agent从持久化数据里还原self.state AgentState(data[state])见 strands-py/src/strands/agent/agent.py说明 state 是跨调用持久化的核心载体。对构建多轮、可恢复的生产 Agent 而言这是 v0.2.0 提供的标准状态通道。模型层Mistral 接入、OpenAI 推理内容与 Bedrock 错误增强新增 Mistral 模型支持PR #284 为 strands 引入 Mistral 支持PR #305 将 Mistral 的structured_output迁移为迭代器实现。安装时需要引入对应 extrapip install strands-agents[mistral]extra 声明位于 strands-py/pyproject.tomlmistral [mistralai2.0.0,3.0.0]。模型实现位于 strands-py/src/strands/models/mistral.py。OpenAI Provider 增加 reasoning contentPR #187 为 OpenAI 模型 provider 增加推理内容支持。在 strands-py/src/strands/models/openai.py 中可以看到完整的推理内容链路读取message.reasoning_content兼容message.reasoning字段作为推理文本L638-L646流式场景下从choice.delta提取reasoning_content或reasoning并切换到reasoning_content数据块类型L755-L767流式事件中reasoning_content数据会被转换为contentBlockDelta下的reasoningContent文本块L584-L585。同时代码中保留了对推理模型多轮对话限制的警告当检测到历史消息中包含reasoningContent时提示 Chat Completions API 不支持多轮推理内容L410-L419。Bedrock 常见错误补充异常信息PR #290 为常见 Bedrock 错误增加异常信息。从 strands-py/src/strands/models/bedrock.py 可以观察到模型层对reasoningContent的完整处理包括对 DeepSeek 系列模型的特殊过滤——reasoningContent在 DeepSeek 多轮对话中存在已知问题代码会丢弃并记录过滤日志L836-L896完整保留reasoningText的text与signature字段、redactedContent字段L1064-L1080流式增量事件中同样透出reasoningContent的文本与签名L1606-L1621。会话区域复用PR #299 让 strands 在可能时使用 boto3 会话中的 region避免重复配置区域信息属于 Bedrock/会话层的一致性问题修复。结构化输出保留$defs与工具化实现PR #294 修复了工具 schema 生成时移除$defs的问题使嵌套 JSON Schema 的$defs定义得以保留——这对于包含复用子模型的复杂 Pydantic 输出类型至关重要。当前仓库中的实现为StructuredOutputTool见 strands-py/src/strands/tools/structured_output/structured_output_tool.py工具 spec 按 Pydantic 模型类缓存_TOOL_SPEC_CACHE命中后深拷贝返回L55-L57工具描述被强制改写为仅在返回最终结果前最后一次调用的指令L38-L42校验成功时通过StructuredOutputContext.store_result保存结果L112-L114校验失败时ValidationError逐字段生成错误明细以error状态的 ToolResult 回传给模型让其自行决定是否修正重试L124-L146其他异常则记录堆栈并返回错误结果L148-L157。这解释了 v0.2.0 中结构化输出迭代化的落地形态结构化输出不再是一个独立的黑盒 API而是注册进工具注册表的普通工具走统一的工具执行与错误处理管线。可观测性tracer 重构与自定义 providerv0.2.0 对可观测性做了密集投入共 6 项相关变更tracer 重构PR #286重构 tracer 模块refactor tracer同时修正了 tracer.py 中一处引用不存在参数的 docstringPR #293自定义 tracer_provider 与 chain 设置PR #316允许用户注入自定义的tracer_provider并支持自定义链路chain装配GenAI span 语义约定更新PR #319按 OpenTelemetry 生成式 AI 语义约定更新 span 属性token span 更新PR #296更新 spanKind 与 token 相关 attributes停止传递 callback handlerPR #323执行链路不再层层传递回调处理器简化了追踪上下文的管理模型并发请求 debug 日志PR #297为模型 converse 请求增加 debug 级日志便于排查 Bedrock 等服务的请求明细。依赖侧otel 相关依赖作为顶层依赖固定为opentelemetry-api/opentelemetry-sdk1.30.x 以上见 strands-py/pyproject.toml且提供otelextra 引入 OTLP HTTP 导出器strands-py/pyproject.toml。升级到 v0.2.0 后需要按新语义约定重新核对既有 dashboard 的 span 命名与 token 属性。A2ATools as SkillsPR #287 在 A2AAgent-to-Agentscope 下将tools 作为 skills暴露使跨 Agent 调用时可以按技能skill粒度描述与路由工具。A2A 相关依赖集中在a2aextraa2a-sdk、uvicorn、fastapi 等见 strands-py/pyproject.toml相关实现可参考 strands-py/src/strands/agent/a2a_agent.py。破坏性变更与内部清理v0.2.0 包含若干破坏性/移除性变更升级时需特别注意移除 FunctionToolPR #325Remove FunctionTool as a breaking change。依赖FunctionTool的代码必须迁移到新的工具抽象如AgentTool体系见 strands-py/src/strands/tools/structured_output/structured_output_tool.py 中的实现模式移除 Agent 调用后的 kwargs 展开PR #289remove kwargs spread after agent call调用返回值的处理方式需要调整移除未使用代码PR #326清理死代码减少维护面。此外还有两项涉及调用形态的other类变更stop passing around callback handlerPR #323见上与executor - run tools - yieldPR #328都要求使用者以迭代/事件流的方式消费工具结果。杂项修复与文档文档警告修复PR #303修复文档构建警告#320 复现测试PR #322新增复现测试用例为后续修复提供回归保障新增贡献者siddhantwaghjaleMistral 支持与 RingoIngo2debug 日志。升级建议与源码指引升级到 v0.2.0 时建议按以下顺序核对工具层替换所有FunctionTool用法PR #325确认$defs保留后嵌套 schema 仍能通过校验PR #294执行层将 Agent/事件循环调用改造成可迭代消费形态PR #268/#295/#328工具结果改为从生成器获取状态层如有跨会话需求通过Agent(state...)传入AgentStatestrands-py/src/strands/agent/state.py模型层Mistral 用户按strands-agents[mistral]extra 安装strands-py/pyproject.tomlOpenAI 推理模型用户确认reasoning_content的消费逻辑strands-py/src/strands/models/openai.py可观测性按 GenAI 语义约定更新 span 属性如需自定义链路可注入tracer_providerPR #316/#319。本文涉及的版本事实均来自 site/src/content/changelog/sdk/python-v0.2.0.md源码佐证见 strands-py/src/strands/agent/agent.py、strands-py/src/strands/models/ 与 strands-py/pyproject.toml。相关集成测试可在 strands-py/tests_integ/ 中继续追踪对应能力的行为验证。赞分享人工智能大模型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点击查看免费下载相关推荐Strands Agents Python SDK v0.1.6 深度解析Bedrock 非流式模式、工具名校验与可观测性修复Strands Agents Python SDK v0.1.6 深度解析Bedrock 非流式模式、工具名校验与可观测性修复 Strands Agents人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Nitro 内置数据库层完全指南SQLite 开箱即用与多连接配置实战Nitro 内置数据库层完全指南SQLite 开箱即用与多连接配置实战 本指南基于开源仓库 ni/nitro Next Generation Server人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Easy-Vibe 三阶段 Vibe Coding 学习路径全解从零基础到 AI 原生产品工程师Easy Vibe 三阶段 Vibe Coding 学习路径全解从零基础到 AI 原生产品工程师 Easy Vibe 是一个面向 AI 时代产品构建者的开源编人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表