新闻详情

新闻详情

首页 / 资讯中心 / 详情

strands-agents Python SDK 1.0.1 版本解析:Graph 并行执行、工具参数序列化修复与可观测性演进

发布时间:2026/9/26 19:35:44来源:尧图网络
strands-agents Python SDK 1.0.1 版本解析:Graph 并行执行、工具参数序列化修复与可观测性演进
人工智能大模型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 1.0.1发布于 2025-07-18是 1.0 系列的首个补丁版本聚焦三类高价值改进为 Graph 多智能体工作流开启真正的并行节点执行、修复直接调用工具direct tool call时因参数不可序列化引发的 JSON 序列化错误、以及让智能体作为工具场景下的 OpenTelemetry trace 分组更符合直觉。阅读本文后你将了解该版本每一项变更的落点、底层实现原理、对应的源码与测试位置并能据此判断升级到 1.0.1 对你的 Agent 编排与可观测性配置意味着什么。版本概览1.0.1 改了什么依据仓库中该版本的变更记录文件 site/src/content/changelog/sdk/python-v1.0.1.mdv1.0.1 共包含 6 项变更全部为**非破坏性breaking: false**变更即升级不会带来 API 兼容性破坏。按类型归类如下类型影响范围变更内容关键提交fixmultiagentGraph 工作流启用并行执行enable parallel execution in graph workflow2b607b5fixagent防止不可序列化的直接工具参数引发 JSON 序列化错误9faadbffixtelemetry / otel智能体作为工具使用时对 trace 进行分组2c067b4docs—更新 README含 Writer 参与a2d58d3otherpyproject更新开发状态分类器development status classifier6638fb0other—README 切换为浅色 Logo以适配 GitHub 暗色模式显示f5e24d4其中前 3 项是本版本的核心技术亮点后 3 项属于文档与元数据层面的打磨。本版本还迎来了两位新贡献者ahmetatalayPR #485Graph 并行执行与 samjulienPR #474README 更新。作为对比前一个版本 v1.0.0site/src/content/changelog/sdk/python-v1.0.0.md2025-07-15引入了 Swarm 多智能体编排器、多模态 Graph 输入、会话持久化等重量级能力因此 v1.0.1 可以看作是对 1.0 主线的一次稳健性修补修复并行执行、序列化与可观测性三处短板为 1.1 及后续版本的稳定迭代铺路。核心修复一Graph 工作流启用并行执行变更背景与价值Graph 多智能体编排器允许开发者把多个 Agent 组织成有向无环图通过节点依赖关系定义执行流程。在 v1.0.1 之前图中同一批次batch内互不依赖的节点只能串行执行——这会让 fan-out扇出类拓扑白白损失吞吐。PR #485 的目标正是同一批次内多个可同时运行的节点真正并发执行并把各自的事件流实时合并输出。实现原理共享队列 独立任务流从源码实现看并行能力位于 strands-py/src/strands/multiagent/graph.py主执行循环_execute_graphgraph.py#L766-L824维护ready_nodes批次队列每一轮取出当前就绪节点集合并调用_execute_nodes_parallel执行随后通过_find_newly_ready_nodes找出本轮完成后新就绪的节点进入下一批次并在批次切换时发出MultiAgentHandoffEvent交接事件。并行核心_execute_nodes_parallelgraph.py#L826-L884采用共享asyncio.Queue 每节点独立任务的架构每个节点调用_stream_node_to_queue把自己的事件流推入同一个队列主协程从队列实时消费并yield从而实现真实实时的事件传播而非轮询式延迟源码 docstring 原意。其中 0.1 秒的wait_for超时用于规避任务全部完成但队列仍在等待的竞态。快速失败语义一旦某个节点流抛出异常队列收到Exception后立即取消其余未完成任务并重新抛出graph.py#L856-L862保证并行执行下的错误不会悬挂。单次调用保证并行节点每个批次只会被调用一次见测试test_graph_parallel_single_invocationstrands-py/tests/strands/multiagent/test_graph.py#L1800。AND-join 语义保留并行 fan-in多个并行节点汇入同一下游节点时下游节点仍会等待所有上游完成见测试test_parallel_fan_in_still_waits_for_allstrands-py/tests/strands/multiagent/test_graph.py#L3134同时还会正确区分仍在执行的并行兄弟节点与已被绕过的死分支graph.py#L1420-L1433 附近。如何用并行节点的两种声明方式结合 GraphBuilder 的使用方式并行拓扑可以这样构建from strands.agent import Agent from strands.multiagent import GraphBuilder # 三个互不依赖的 Agent 节点 agent_a Agent(nameagent_a, instructions处理任务 A) agent_b Agent(nameagent_b, instructions处理任务 B) agent_c Agent(nameagent_c, instructions处理任务 C) builder GraphBuilder() builder.add_node(agent_a, a) builder.add_node(agent_b, b) builder.add_node(agent_c, c) # 方式一声明多个入口点它们天然并行 builder.set_entry_point(a) builder.set_entry_point(b) builder.set_entry_point(c) graph builder.build() events await graph.stream_async(并行处理这批任务)每个set_entry_point调用都会把对应节点加入起始批次起始批次内的节点互不依赖因此在 v1.0.1 中会并行执行。此外如果想让某个节点成为并行 fan-in 汇聚点如节点 C 等待 A、B 完成后聚合结果只需把 C 声明为 A、B 的共同下游即可AND-join 语义会被自动保留。测试test_graph_streaming_parallel_eventsstrands-py/tests/strands/multiagent/test_graph.py#L1570给出了一个可验证的并行性判据三个各睡 0.05 秒的并行节点总耗时被断言小于 0.2 秒且三个节点的multiagent_node_stream事件都会出现在结果流中test_graph_parallel_with_failures同文件 L1690则验证了并行场景下的故障传播。核心修复二不可序列化的直接工具参数不再引发 JSON 错误问题背景SDK 支持直接调用工具direct tool call即 Agent 可以直接以编程方式调用已注册的工具包括通过 MCP 协议接入的工具。在 v1.0.1 之前记录这类调用时若工具入参包含datetime、自定义对象等 JSON 不可序列化的值json.dumps会直接抛TypeError导致整个调用链失败。PR #498 修复的正是这个边界问题。修复实现兜底序列化器修复落点在工具调用记录模块 strands-py/src/strands/tools/_caller.pyinput_parameters json.dumps( filtered_input, defaultlambda o: fnon-serializable: {type(o).__qualname__}, )strands-py/src/strands/tools/_caller.py#L198这段代码位于_record_tool_execution方法内负责把过滤后的工具入参仅保留 tool spec 中声明的参数见同文件_filter_tool_parameters_for_recording序列化为用户消息文本对每个无法 JSON 序列化的值default回调返回形如non-serializable: datetime.datetime的占位字符串——既保留类型信息便于排查又保证序列化必然成功序列化结果随后被拼入用户消息agent.tool.name direct tool call. Input parameters: ...连同过滤后的 ToolUse 一并写入消息历史strands-py/src/strands/tools/_caller.py#L194-L229。这一策略与 telemetry 层的 JSON 编码器思路一致自定义JSONEncoder会递归处理容器对datetime/date输出 ISO 格式字符串、对无法序列化的叶子值替换为replaced见 strands-py/src/strands/telemetry/tracer.py#L36-L81确保 trace 与消息记录都不会因序列化问题而中断。验证单元测试 strands-py/tests/strands/tools/test_caller.py#L94 断言了直接工具调用记录产生的消息文本格式agent.tool.test_tool direct tool call.\nInput parameters: {...}可作为升级后回归验证的参考点。核心修复三Agent 作为工具时的 trace 分组变更背景本仓库支持智能体作为工具agent as tool一个 Agent 可以把另一个 Agent 注册为工具并调用它形成层次化多智能体结构。在此场景下子 Agent 的执行会开启新的 span/trace若分组不当父 Agent 与子 Agent 的 trace 会彼此割裂难以在 OpenTelemetry 后端还原父调子的完整调用链。PR #493 的目标是让这类 trace 归组从而在链路图中直观呈现嵌套关系。实现侧参考可观测性基础设施集中在 strands-py/src/strands/telemetryTracer._start_span提供parent_span参数与force_root标志用于显式挂接父子 span 或让后台任务脱离当前 span 独立成根strands-py/src/strands/telemetry/tracer.py#L209-L226span 名称、属性遵循 GenAI 语义约定gen_ai.*并支持通过LANGFUSE_PUBLIC_KEY或gen_ai_span_attributes_only等环境变量切换 span 事件与 span 属性两种记录方式strands-py/src/strands/telemetry/tracer.py#L94-L130导出端支持 Console 与 Batch 两类 SpanProcessor可配合OTEL_EXPORTER_OTLP_ENDPOINT将 trace 送抵 OTLP 端点strands-py/src/strands/telemetry/config.py#L143-L167。结合 v1.0.0 已引入的 Swarm/Graph spanPR #4511.0.1 的此项修复补齐了Agent 嵌套调用这一层级的链路完整性。建议配置若要完整观测嵌套智能体的调用链可在初始化时启用 OTLP 导出from strands.telemetry import Telemetry # 通过环境变量指定 OTLP 端点例如 # OTEL_EXPORTER_OTLP_ENDPOINThttp://localhost:4318 Telemetry().configure(service_namemy-agent-service)配置后父 Agent 调用子 Agent 工具所产生的 span 会归属于同一 trace可在支持 OpenTelemetry 的后端中按父子关系展开查看。元数据与文档层面变更README Logo 切换PR #475README 改用浅色 Logo以便在 GitHub 暗色模式下获得更好的显示效果——属于纯展示性调整不影响任何 API。开发状态分类器更新PR #480pyproject.toml中的development statusclassifier 被更新反映项目从预览走向正式发布的阶段该字段用于 PyPI 发布页面的成熟度标注。README 内容更新PR #474由社区贡献者 samjulienWriter 角色参与修订 README改善项目介绍与上手引导。升级建议与注意事项兼容性v1.0.1 的全部变更均标记为非破坏性从 v1.0.0 升级无需改动现有 API 调用升级后 Graph 并行节点从串行变为并发可能影响既有用例对事件到达顺序的假设同一批次内不再保证先后顺序建议关注依赖节点间显式时序的测试。并行收益如果你的工作流包含多入口点 fan-out 或并行 fan-in 拓扑升级后应能直接观察到吞吐提升可用graph.stream_async的事件流验证各节点是否并发产出事件。序列化兜底直接调用工具传入不可序列化参数时消息记录会包含non-serializable: TypeName占位符如果你的下游消费逻辑依赖原始参数对象而非文本需要自行处理这类占位。可观测性启用 OTLP 导出并查看嵌套智能体调用时1.0.1 起子 Agent 的 span 会与父 Agent 归组若使用非 OTLP 后端请确认其支持 span 事件读取否则可参考 tracer 中gen_ai_span_attributes_only的开关说明调整记录方式。总而言之strands-agents Python SDK v1.0.1 是一个小而稳的补丁版本它以三个精准修复夯实了多智能体编排、工具调用健壮性与可观测性三条核心链路为后续版本的迭代提供了更可靠的地基。相关源码可继续在 strands-py/src/strands/multiagent/graph.py、strands-py/src/strands/tools/_caller.py 与 strands-py/src/strands/telemetry/tracer.py 中深入研读。赞分享人工智能大模型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 v1.31.0 技术解读A2A 上下文传递、Graph 执行优化与 OpenAI 模型层修复strands agents Python SDK v1.31.0 技术解读A2A 上下文传递、Graph 执行优化与 OpenAI 模型层修复 strand人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Strands Agents Python SDK v0.1.6 深度解析Bedrock 非流式模式、工具名校验与可观测性修复Strands Agents Python SDK v0.1.6 深度解析Bedrock 非流式模式、工具名校验与可观测性修复 Strands Agents人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务解读 mastra/core 1.62–1.67 版本演进Agent 执行模型、可观测性与沙箱能力全景解读 mastra/core 1.62–1.67 版本演进Agent 执行模型、可观测性与沙箱能力全景 本篇技术指南以 mastra/core 包近期版本人工智能Agent 框架AI AgentRAG后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Apple M3 Ultra本地跑MiniMax H3:从部署到实测全流程解析 2026/9/26 20:30:29

Apple M3 Ultra本地跑MiniMax H3:从部署到实测全流程解析

说实话,在正式上手之前,我对“Apple M3 Ultra 本地跑 MiniMax H3”这件事是有点打鼓的。M3 Ultra 不是那种传统意义上堆显存的 AI 服务器,它是一台桌面工作站,统一内存再怎么快,真的能把几十 GB 的大模型喂饱、跑稳、跑…

阅读更多 →
Docker部署Redis实战:从单机到主从哨兵高可用 2026/9/26 20:30:23

Docker部署Redis实战:从单机到主从哨兵高可用

先说一个很多人问过我的问题:为什么非要用 Docker 来装 Redis?原因其实很简单——本地开发机想快速起一个 Redis 环境,手动下载编译安装要处理一堆依赖,跨平台还有各种坑,而 Docker 把整个 Redis 运行环境打包成了镜像…

阅读更多 →
Agent记忆不跟工具搬家:三层记忆模型与文件系统落地实践 2026/9/26 20:30:10

Agent记忆不跟工具搬家:三层记忆模型与文件系统落地实践

1. 从“换个工具就失忆”说起:Agent 记忆到底卡在哪用 Claude Code 写了一个礼拜的项目,换到 Codex 上继续,结果它对你之前定的命名规范、目录结构、踩过的坑一无所知,一切从头解释——这个场景我相信只要同时用过两个以上编码 Ag…

阅读更多 →
金融服务聚合平台从0到1:架构设计与核心风控实践 2026/9/26 20:30:10

金融服务聚合平台从0到1:架构设计与核心风控实践

1. 项目定位与整体设计思路1.1 这个项目到底要解决什么问题"financial-services"这个标题乍一看非常宽泛,我接到这个项目需求时,第一反应不是"金融行业有多大",而是"客户到底想让我做什么"。金融服务业态太多—…

阅读更多 →
脑电信号左右手运动想象识别实战:轻量模型+单机部署 2026/9/26 20:30:03

脑电信号左右手运动想象识别实战:轻量模型+单机部署

简介:本资源是一套面向脑机接口(BCI)初学者与进阶研究者的运动想象脑电信号分析完整实践方案,聚焦左右手运动想象任务的特征提取与分类识别。基于BCI Competition 2008 Dataset 2b公开数据集,系统实现单次/多次被试两种…

阅读更多 →
eNSP PRO部署实战:从环境准备到首个拓扑跑通 2026/9/26 20:29:50

eNSP PRO部署实战:从环境准备到首个拓扑跑通

1. 为什么eNSP PRO值得折腾:从老版eNSP的痛点说起如果你在国内网络工程圈待过几年,大概率绕不开华为eNSP这个模拟器。老版eNSP陪伴了无数人考HCIA、HCIP、HCIE,但它的问题也很明显:只支持Windows、依赖VirtualBox、设备镜像老旧、…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉