新闻详情

新闻详情

首页 / 资讯中心 / 详情

Strands Python SDK v1.6.0 深度解析:AgentInput 输入模型重构、A2A Part 扩展与多智能体调用增强

发布时间:2026/9/27 21:44:18来源:尧图网络
Strands Python SDK v1.6.0 深度解析:AgentInput 输入模型重构、A2A Part 扩展与多智能体调用增强
人工智能大模型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 Python SDKstrands-agentsv1.6.0 是一次聚焦于输入模型统一化、多智能体调用体验与 A2A 协议能力扩展的版本迭代。本文以官方变更记录 sdk/python-v1.6.0.md 为核心骨架结合仓库源码逐条剖析每个改动背后的实现原理你将掌握AgentInput类型别名的使用方式与多态输入解析逻辑、MultiAgentBase.__call__的同步调用机制、A2A 中FilePart/DataPart的承载方式以及结构化输出追踪span与文件会话管理的安全修复细节并了解该版本的依赖与工程维护基线。一、版本概览与发布要点v1.6.0 发布于 2025-08-26对应 Git tagpython/v1.6.0。本版本共包含十余项改动全部为**非破坏性breaking: false**变更核心可归纳为四类类别代表改动影响面Agent 输入模型新增AgentInputTypeAlias、invoke支持无输入或Message输入、修复 toolUse 块不可序列化参数agent多智能体MultiAgentBase新增__call__实现multiagent/base.pyA2A 协议支持 A2AFileParts与DataPartsmultiagent/a2a/executor.py正确性与安全structured_output_span记录时序修复、file_session_manager路径穿越防护agent / session 模块工程维护pydantic 最低版本更新、ruff/pytest 等依赖升级、CI actions 升级依赖与 CI以下逐一展开。二、Agent 输入模型统一AgentInputTypeAlias 与多态输入解析2.1AgentInput类型别名的引入与迁移v1.6.0 先通过 PR #738 新增AgentInput类型别名随后 PR #746 将其移入types子模块成为公共类型入口。其定义位于 strands-py/src/strands/types/agent.py#L23AgentInput: TypeAlias str | list[ContentBlock] | list[InterruptResponseContent] | Messages | None这意味着 Agent 的输入统一为五种形态str纯文本提示词list[ContentBlock]内容块列表如文本、图片等多模态块list[InterruptResponseContent]中断响应列表用于恢复被挂起的 agentMessages完整的历史消息序列None不提供输入仅依赖会话历史。该别名同时被AgentBase协议与LocalAgent的实现共用例如 agent/base.py#L9-L10 中AgentBase.invoke_async/__call__的prompt参数签名即为prompt: AgentInput None从而在类型层面统一了同步、异步与流式三种入口的输入契约。2.2 多态输入的实际解析逻辑LocalAgent.invoke_async等入口会将prompt交给_convert_prompt_to_messages进行归一化其完整实现位于 strands-py/src/strands/agent/agent.py#L1794-L1849。核心分支如下字符串输入包装为[{role: user, content: [{text: prompt}]}]空列表直接作为空消息序列全为 dict 的列表进一步判断——若元素满足Message必填键则视为完整Messages直接并入会话若元素命中ContentBlock注解键则包装成一条 user 消息若元素包含interruptResponse则抛出明确错误提示agent 未处于中断状态时不应收到中断响应None仅依赖已有会话历史配合 v1.6.0 的“无输入 invoke”能力其他类型抛出ValueError提示合法输入必须是str | list[ContentBlock] | Messages | None。此外该函数还会在会话最后一条消息是toolUse时自动补一条缺失的toolResult消息以保证发给模型的会话结构合法对应 PR #568 修复的同一场景。2.3 无输入 invoke 与Message输入支持PR #653PR #653 让agent.invoke_async()可以不传任何输入仅基于内部维护的会话历史继续推理同时支持直接传入完整的Messages序列作为上下文。这在多轮对话续接、会话恢复与多智能体编排中非常实用——例如恢复一个因中断挂起的任务时只需保持 agent 实例或通过 session 管理恢复状态再调用invoke_async()即可。三、修复 agent 作为工具时的不可序列化参数PR #568当把 Agent 通过as_tool()暴露为工具、供另一个 Agent 调用时工具调用块toolUse block中可能携带无法序列化的参数。v1.6.0 修复了该问题配合 agent.py#L1803-L1817 中“检测到最新消息为 toolUse 时补全 toolResult”的机制确保跨 Agent 的工具调用链在序列化与消息补全两个环节都保持合法。使用该能力的典型场景是多智能体嵌套外层 agent 通过AgentTool调用内层 agentinvoke返回的AgentResult会作为工具结果回填会话。四、MultiAgentBase.__call__多智能体的同步调用体验PR #6454.1 实现细节PR #645 为MultiAgentBaseSwarm、Graph等编排器的公共基类新增了同步__call__实现位于 strands-py/src/strands/multiagent/base.py#L309-L327def __call__( self, task: MultiAgentInput, invocation_state: dict[str, Any] | None None, **kwargs: Any ) - MultiAgentResult: if invocation_state is None: invocation_state {} if kwargs: invocation_state.update(kwargs) warnings.warn(**kwargs parameter is deprecating, use invocation_state instead., stacklevel2) return run_async(lambda: self.invoke_async(task, invocation_state))值得注意的两点设计invocation_state默认值为None而非可变默认参数{}规避了 Python 可变默认参数共享状态的经典陷阱**kwargs进入弃用路径传入的额外关键字参数会被合并进invocation_state并发出弃用警告官方推荐统一使用invocation_state传递跨 Agent 的共享上下文。4.2 使用方式由此Swarm / Graph 编排器与LocalAgent保持一致的调用习惯from strands.agent import Agent from strands.multiagent.swarm import Swarm agent Agent(nameworker, modelyour-model, system_prompt...) swarm Swarm(agents[agent], ...) # 同步调用内部通过 run_async 驱动事件循环 result swarm(帮我完成这个任务, invocation_state{trace_id: abc})五、A2A 协议扩展FileParts与DataPartsPR #5965.1 承载多模态与结构化数据v1.6.0 让 A2AAgent-to-Agent通信支持两种新增 Part 类型FilePart跨 Agent 传输文件内容文本、二进制等用于文档分析、代码评审等场景DataPart承载结构化 JSON 数据用于传递非文本的控制信息。在 strands-py/src/strands/multiagent/a2a/executor.py 中FilePart与DataPart与TextPart、InternalError、InvalidParamsError等共同构成 A2A 消息Part的联合类型。5.2DataPart与中断机制的深度集成源码中一个值得关注的模式A2A 的中断interrupt响应正是通过DataPart承载的。executor 定义了INTERRUPT_RESPONSE_KEY interruptResponse当 agent 需要用户输入时服务端会构造两部分消息一个TextPart描述需要什么一个DataPart携带每个中断的id见 executor.py#L434-L464。客户端恢复被挂起的任务时发送形如下面的DataPart即可见 executor.py#L666-L672{kind: data, data: {interruptResponse: {interruptId: id, response: any}}}该载荷与 Strands 的InterruptResponseContent类型逐字对齐注释明确说明“wire 契约与 SDK 类型不允许漂移”。这也解释了AgentInput别名中为何包含list[InterruptResponseContent]——它与 A2A 的中断恢复路径共用同一数据形态。六、结构化输出追踪span修复PR #709PR #709 修复了structured_output_span的事件记录时序先在 span 上写入 system_prompt再追加输入消息。对应实现位于 strands-py/src/strands/agent/agent.py#L1051-L1086with self.tracer.start_structured_output_span(...) as structured_output_span: ... structured_output_span.set_attributes({ gen_ai.system: strands-agents, gen_ai.agent.name: self.name, gen_ai.agent.id: self.agent_id, gen_ai.operation.name: execute_structured_output, }) if self.system_prompt: structured_output_span.add_event( gen_ai.system.message, attributes{role: system, content: serialize([{text: self.system_prompt}])}, ) for message in temp_messages: structured_output_span.add_event( fgen_ai.{message[role]}.message, ...)时序修复后gen_ai.system.message事件始终位于各角色消息事件之前保证追踪数据trace中的对话顺序与真实发送给模型的顺序一致便于后续在 telemetry 中对结构化输出调用做准确的时序分析。structured_output()的调用入口本身支持“传 prompt 则临时使用不写入历史、不传则仅用历史”两种模式见 agent.py#L989-L1018。七、会话安全file_session_manager路径穿越防护PR #728PR #728 修复了文件型会话管理器file_session_manager中message_id可能引发路径穿越path traversal的问题当message_id由外部输入构造文件路径时恶意构造的../序列可能逃逸会话存储目录。该修复对message_id进行了校验/归一化防止越界读写。对于以文件持久化会话状态的生产部署建议在升级后复核所有传入message_id的上游来源确保其来自受信任的会话上下文。八、工具执行器Tool ExecutorsPR #658PR #658 引入 “tool executors” 概念chore 类别非破坏性。结合 strands-py/src/strands/tools 下的实现与 tests 测试它是对工具执行逻辑的进一步抽象为后续支持更灵活的工具调度如异步执行、重试、并发控制打下基础。对使用者而言本版本的既有tool装饰器与ToolRegistry用法保持兼容。九、工程与依赖维护基线v1.6.0 同步更新了开发与 CI 依赖便于复现构建环境依赖版本范围变化pre-commit3.2.0,4.2.0→3.2.0,4.4.0ruff0.4.4,0.5.0→0.4.4,0.13.0pytest-asyncio0.26.0,0.27.0→0.26.0,1.2.0pytest-cov4.1.0,5.0.0→4.1.0,7.0.0pydantic最低版本上调PR #723actions/checkout4 → 5actions/download-artifact4 → 5其中pydantic 最低版本上调PR #723对使用者有直接影响升级到 v1.6.0 后需要确保环境中 pydantic 版本满足新的最低要求否则会出现导入错误。其余为开发工具链与 CI 基础设施升级另在 pyproject.toml 中维护完整的项目依赖声明。此外.gitignore增加了.DS_StorePR #681属于仓库卫生维护。十、新贡献者本版本迎来两位新贡献者vawsgitPR #681.DS_Store忽略规则chengweitsaiPR #709结构化输出 span 时序修复。总结与升级建议Strands Python SDK v1.6.0 以“输入模型统一 多智能体调用增强 A2A 能力扩展”为主线是一次质量与体验并重的非破坏性迭代输入侧AgentInput别名types/agent.py统一了五种输入形态_convert_prompt_to_messagesagent/agent.py保证了多态输入的正确归一化与 toolUse 消息补全编排侧MultiAgentBase.__call__multiagent/base.py让 Swarm / Graph 获得与单个 Agent 一致的同步调用体验并引导使用invocation_state传递共享上下文协议侧A2AFilePart/DataPart支持multiagent/a2a/executor.py打通了多模态传输与基于DataPart的中断恢复质量侧结构化输出 span 时序、文件会话路径穿越、toolUse 参数序列化等修复提升了可观测性与安全性。升级时请重点关注 pydantic 最低版本要求并核对会话/message_id相关调用的输入来源同时可借助本版本新增的MultiAgentBase.__call__与无输入invoke能力简化多智能体编排与对话续接代码。赞分享人工智能大模型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点击查看免费下载相关推荐为什么你的Godot游戏节点之间沟通不畅信号机制快速上手指南为什么你的Godot游戏节点之间沟通不畅信号机制快速上手指南 当你在用 Godot Engine 开发游戏时是否遇到过这样的困境子弹击中了敌人但计分板毫人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务Easy-Vibe 三阶段 Vibe Coding 学习路径全解从零基础到 AI 原生产品工程师Easy Vibe 三阶段 Vibe Coding 学习路径全解从零基础到 AI 原生产品工程师 Easy Vibe 是一个面向 AI 时代产品构建者的开源编人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务用 Strands SDK 构建多智能体编排系统Teachers Assistant 教师助手示例深度解析用 Strands SDK 构建多智能体编排系统Teachers Assistant 教师助手示例深度解析 本文以 strands py 开源仓库中的 mu人工智能大模型AI AgentAgent 框架多智能体工具调用MCP 服务上一篇WaveTools鸣潮工具箱3分钟解锁120帧的终极完整指南下一篇10分钟掌握Source Han Serif CN免费商用中文字体完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

第 3 章:工作台——数据看板 2026/9/27 22:48:51

第 3 章:工作台——数据看板

本章学习目标 学会设计数据看板类页面的布局掌握统计卡片组件的实现(数字动效、趋势指标)集成 ECharts 实现趋势图、饼图、热力图实现待办队列(Tab 切换 虚拟列表)了解 Mock 数据与真实接口切换方案3.1 需求分析与布局设计 工作台…

阅读更多 →
Day78-AI接口设计三范式:同步、异步、流式到底怎么选 2026/9/27 22:48:51

Day78-AI接口设计三范式:同步、异步、流式到底怎么选

上期回顾: Day77我们从零手写了一个 ReAct Agent,看清了"思考 → 行动 → 观察"的循环本质。但 Agent 再聪明,对外暴露的也只是一个接口——接口范式选错,用户照样被"PPT 式体验"劝退。这篇把同步、异步、流式…

阅读更多 →
总部和分支建立GRE+分支通过总部统一出口去互联网组网 2026/9/27 22:48:44

总部和分支建立GRE+分支通过总部统一出口去互联网组网

一 组网说明 如上图: 总部和分支组网,由于分支未申请互联网出口,只能总部和分支建立GRE隧道,分支和总部都通过总部的一个出口访问互联网。 总结方法: 方法1:分支配置明细路由到达总部出口公网地址,建立GRE隧道,然后配置默认路由扔向GRE隧道接口;这样去往总部内网和…

阅读更多 →
企业招聘智能Agent-React-SpringBoot 2026/9/27 22:48:44

企业招聘智能Agent-React-SpringBoot

企业招聘智能 Agent(React Spring Boot) 对照篇:企业知识库智能问答 Agent(React Nest) 本文讲 Java 线:同一套 Agent 工程能力,场景换成招聘(JD / 简历 / 人岗匹配 / 发放 / 预约…

阅读更多 →
Effective C++ 学习笔记 条款47 请使用traits classes表现类型信息 2026/9/27 22:48:44

Effective C++ 学习笔记 条款47 请使用traits classes表现类型信息

STL 主要由容器、迭代器和算法的模板构成,但它也有一些工具模板。其中一个叫做 advance。advance 将指定的迭代器移动指定的距离:从概念上讲,advance 只是执行 iter d,但 advance 不能那样实现,因为只有随机访问迭代器…

阅读更多 →
电商商品图出图周期与工时参数对照:实拍流程与AI生成 2026/9/27 22:48:43

电商商品图出图周期与工时参数对照:实拍流程与AI生成

截至 2026 年 9 月,电商商品图的出图周期可以用几组可核对的参数描述:10 个 SKU 走传统实拍完整出图耗时 3~5 个工作日,单批次需 1 名拍摄 1 名美工全程投入,多平台规格适配单次约 2~4 小时;走 AI 生成路径&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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