拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Strands Python SDK v1.42.0 发布解析:S3 自定义端点、Gemini 缓存计量与 A2A AgentCard 定制

人工智能大模型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-pyv1.42.0 的官方变更记录结合 monorepo 仓库中的源码实现逐一解读该版本引入的新特性与修复S3SessionManager新增endpoint_url参数以支持 MinIO/LocalStack 等 S3 兼容后端、Gemini 模型将缓存 token 接入 usage 元数据、A2A 服务器新增agent_card_url可定制 AgentCard、双向流式bidi新增Limits支持以及MetricsClient单例线程安全化等。读完本文你将掌握这些 API 的正确用法、它们对应的源码位置以及如何在自己的 Agent 项目中落地这些能力。版本概览v1.42.0 是 strands-agents/sdk-python 并入 monorepo 收敛过程中的一个里程碑版本发布于 2026-06-01。该版本包含约 30 项变更全部为非破坏性breaking: false横跨模型model、工具tool、多智能体multiagent、A2A、遥测telemetry、双向流式bidirectional-streaming、MCP 等多个领域并迎来了 6 位新贡献者tealgreen0503、yatszhash、yoppi、gtholpadi、he-yufeng、yananym。从变更类型分布看本版本以feat和fix为主另有大量chore/docs/other类仓库治理工作如合并 strands-agents/docs 与 sdk-typescript 进 monorepo、同步 README、更新 CI 权限等这些为后续 SDK 的统一演进打好了基础。核心新特性一S3SessionManager 支持自定义 endpoint_url新增参数与典型场景本版本为 S3SessionManager 新增了endpoint_url构造参数PR #1934作者 tealgreen0503。该参数专门用于两类场景S3 兼容的本地/自托管存储后端如 MinIO、LocalStackVPC 端点PrivateLink通过 AWS PrivateLink 访问 S3 时需要将流量导向 VPC endpoint 的 URL。from strands.session.s3_session_manager import S3SessionManager # 连接 MinIO / LocalStack 等 S3 兼容后端 session_manager S3SessionManager( session_idsession-123, bucketmy-agent-bucket, prefixagents, region_nameus-east-1, endpoint_urlhttp://localhost:9000, # MinIO 默认端口 )源码实现细节从源码看endpoint_url与boto_session、boto_client_config、region_name一起被透传到 boto3 客户端创建处s3_session_manager.py#L48-L91session boto_session or boto3.Session(region_nameregion_name) # ... self.client session.client(service_names3, configclient_config, endpoint_urlendpoint_url)值得注意的实现细节包括User-Agent 注入构造客户端时SDK 会自动向 boto3 请求追加strands-agents标识。若用户传入了自定义boto_client_configSDK 会通过merge()保留原有user_agent_extra并追加标识L79-L88便于服务端识别流量来源。与 Bedrock 模型的一致设计同版本中 bedrock.py 的 Bedrock 模型也接受endpoint_url用于 VPC PrivateLink 访问 Bedrock Runtime两个模块采用了完全相同的参数语义形成一致的自定义端点模式。存储结构S3SessionManager在 bucket 下按session_id/agents/agent_id/messages/message_n.json的层级组织对象见类 docstringprefix参数可置于最前用于多租户隔离。作为RepositorySessionManager与SessionRepository的双重实现它完整支持会话、Agent、消息的增删改查与分页列举list_messages支持limit/offset且读取消息时采用ThreadPoolExecutor并行加载、按索引保持顺序返回见 L313-L348。核心新特性二Gemini 模型接入缓存 token 元数据变更内容PR #2287作者 yatszhash为 Gemini 模型打通了缓存 tokencached content token计量使其能够透传到事件流的 metadata usage 中PR #2353作者 he-yufeng则处理了safety-blocked metadata内容被安全策略拦截时的元数据情况。源码实现在 models/gemini.py#L482-L514 中Gemini 的metadata事件处理逻辑会解析usage_metadata并构造统一的Usage结构usage_data: Usage { inputTokens: input_tokens, outputTokens: ( candidates_tokens thoughts_tokens if candidates_tokens is not None else max(0, total_tokens - input_tokens) ), totalTokens: total_tokens, } if cached : usage_metadata.cached_content_token_count: usage_data[cacheReadInputTokens] cached这里的核心工程考量是token 桶口径Gemini 的total_token_count将 prompt、candidates、tool_use_prompt、thoughts 四类 token 折叠在一起而tool_use_prompt属于输入、thoughts按输出计费直接做减法会错配。因此实现采用各桶自加策略输入 prompt tool_use_prompt输出 candidates thoughts仅在 candidates 缺失时才回退到减法L484-L502。新增的cacheReadInputTokens字段则让上层遥测见下文MetricsClient的event_loop_cache_read_input_tokens直方图能精确观测缓存命中带来的成本节省。Gemini 流式转换器还负责把 Gemini 的message_stop原因映射为 SDK 标准 stop reasonTOOL_USE → tool_use、MAX_TOKENS → max_tokens、SAFETY → guardrail_intervenedL471-L480这正是处理 safety-blocked metadata的具体落点。配套vLLM reasoning deltas同版本中OpenAI 兼容模型层新增了读取 vLLM reasoning deltasPR #2354的能力。结合map_mcp_content_to_tool_result_contentPR #2370将 MCP content 转 tool result 的方法提升为公共 API本版本在多 provider 输出归一化方向上前进了一步——vLLM 部署下推理内容reasoningdelta 也能被正确消费。核心新特性三A2A 服务器可定制 AgentCard 中的 URL变更内容PR #2003作者 waitasecant为 A2AServer 新增了agent_card_url属性用于覆盖 AgentCard 中公布的 URL。源码实现A2AAgent-to-Agent协议要求每个 Agent 通过AgentCard对外公布自身地址。A2AServer的构造参数host默认127.0.0.1、port默认9000、http_url用于确定服务可达地址而新加的agent_card_url属性提供了更灵活的覆盖手段property def agent_card_url(self) - str: Get the URL advertised in the AgentCard. Defaults to http_url. Can be overridden to advertise a custom URL (e.g., without trailing slash or with a different base). return self._agent_card_url if self._agent_card_url is not None else self.http_url agent_card_url.setter def agent_card_url(self, url: str) - None: Override the URL advertised in the AgentCard. self._agent_card_url url该属性在构建AgentCard时被引用server.py#L181-L187默认回退到http_url。典型使用场景部署在负载均衡器后时AgentCard 公布的是外部域名而非内部host:port需要去除 URL 末尾斜杠或统一 URL 前缀规范时。from strands.multiagent.a2a.server import A2AServer server A2AServer(agentagent, host0.0.0.0, port9000) server.agent_card_url https://agents.example.com/my-agent # 覆盖对外公布的地址核心新特性四双向流式bidi引入 LimitsPR #2360作者 notowen333为 strands-py-wasm 的双向流式bidirectional-streaming能力新增了Limits并支持在invoke/stream过程中生效。从源码结构看Limits用于约束单次调用/流式会话的资源上限对应 experimental/bidi 目录下的 agent 循环实现同时 strands-py-wasm 相关 PR#2361、#2386、#2412让 wasm 变体在流式与容器继承方面持续对齐。同组改动中PR #2412 为 strands-py-wasm 增加了DecoratedTool用于承载宿主侧host-sidePython 工具工具加载器 tools/loader.py 会优先识别模块中装饰了tool的函数工具实例并批量加载再回退到模块级工具加载。这两个能力共同完善了 wasm 运行时的工具生态。关键修复与稳定性改进MetricsClient 单例线程安全化PR #2349telemetry/metrics.py 中的MetricsClient是管理 OpenTelemetry 指标仪器的单例。本版本采用**双重检查锁定double-checked locking**模式确保多线程下安全初始化def __new__(cls) - MetricsClient: if cls._instance is None: with cls._lock: if cls._instance is None: cls._instance super().__new__(cls) return cls._instance同时__init__也通过先查hasattr(self, meter)、再持锁复查的两段式检查避免并发初始化竞态L617-L635。该客户端在初始化时即创建计数器与直方图族包括事件循环周期、延迟、输入/输出 token以及随本版本同步引入的event_loop_cache_read_input_tokens、event_loop_cache_write_input_tokens缓存 token 直方图L637-L662与前述 Gemini 缓存 token 计量形成完整闭环。工具结果保持请求顺序PR #2340并发工具调用的结果此前可能存在乱序问题本版本修复为严格保持请求顺序返回。这与S3SessionManager.list_messages中并行加载、按索引回填结果的实现思路results[key_to_index[key]] data一致说明该版本对并发执行但顺序归位这一模式做了系统性加固。其他值得注意的修复消息内容清洗处理 None 文本PR #1920在消息内容净化逻辑中容忍None文本避免某些 provider 返回空文本时崩溃。结构化输出校验日志降级PR #2368将校验失败日志从 error 降为 debug减少无效告警噪音。测试稳定性PR #2319修复 flaky 测试使其同时接受字符串或数字类型断言。http_request / file_editor 工具安全警告PR #2391为这两个 vended 工具补充安全警告文档提醒使用者其潜在风险。CI 权限收敛PR #2367将授权检查任务的权限收敛为contents: read遵循最小权限原则。仓库治理monorepo 收敛本版本包含多条围绕 monorepo 收敛的chore变更合并 strands-agents/docs#2339与 sdk-typescript#2350、#2363进入 monorepo、准备目录布局#2317、更新过时引用#2358、Python/TypeScript 包分别使用独立 README#2384、修复文档合并后的 fast-follow 事项#2348。从当前仓库结构可以确认这一收敛结果harness-py、harness-ts、strands-py、strands-ts、strands-mcp、strands-cli等子项目已在同一仓库下共存Python 与 TypeScript SDK 的 API 对齐成为后续版本演进的主线。版本验证与使用建议升级方式通过pip install strands-agents1.42.0安装对应 PyPI 包 strands-agents v1.42.0。本版本无破坏性变更可从更早版本平滑升级。新特性验证清单用 MinIO/LocalStack 初始化S3SessionManager(endpoint_url...)并跑一次会话持久化使用 Gemini 模型时检查流式事件metadata中的usage.cacheReadInputTokens字段部署 A2A 服务时设置server.agent_card_url并核对下发的 AgentCard多线程环境下首次调用MetricsClient()确认单例只初始化一次、各指标仪器正常创建。配套测试与文档本仓库 strands-py/tests、strands-py/tests_integ 中提供了会话管理、模型、多智能体、遥测等模块的单元与集成测试可作为新 API 用法的行为参考models/bedrock.py 与 s3_session_manager.py 中的 docstring 是自定义端点参数的权威说明。小结v1.42.0 是一个广度优先的版本它没有大幅重构却在 S3 存储自定义端点、Gemini 缓存成本计量、A2A 协议 URL 定制、wasm 双向流式与工具生态、遥测线程安全等维度同时补强并以 monorepo 收敛为后续 Python/TypeScript 双 SDK 的同步演进铺路。对于在生产环境使用 Strands Python SDK 的团队本版本尤其值得关注的是endpoint_url打通自建对象存储、cacheReadInputTokens观测缓存收益与agent_card_url规范 Agent 对外暴露地址三个可直接落地的能力点。赞分享人工智能大模型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点击查看免费下载相关推荐如何上手 ok-ww鸣潮后台自动战斗与一键日常完整指南如何上手 ok ww鸣潮后台自动战斗与一键日常完整指南 ok ww 是一个面向《鸣潮》的图像识别自动化程序核心能力是后台自动战斗、刷声骸和一键日常。它只在GUI 自动化计算机视觉RPA人工智能Temporal Python SDK分布式缓存缓存节点配置Temporal Python SDK分布式缓存缓存节点配置 在分布式系统中缓存是提升性能的关键组件。Temporal Python SDK通过缓存工作流实MCP Python SDK 客户端传输全解析Streamable HTTP、stdio、内存与自定义 TransportMCP Python SDK 客户端传输全解析Streamable HTTP、stdio、内存与自定义 Transport 导读 在 MCPModel Co人工智能MCP 服务MCP Clients上一篇【亲测免费】 ProGuard 开源项目使用教程下一篇告别生硬点赞GoodViewAndroid点赞1动画的优雅实现方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门