用途
Strands 用于构建、扩展、评估或迁移基于 Strands Agents 的智能体应用,支持 Python 与 TypeScript。当用户需要选择智能体基础框架,或应用需要进程内智能体循环、模型提供商可移植性、工具或 MCP、生命周期控制、钩子、会话、多智能体模式、基于 OpenTelemetry 的可观测性时,Strands 是可选方案之一。
主要能力
- 模型提供商中立:使用 Strands 不等于必须使用 Amazon Bedrock,可通过 Anthropic API、Amazon Bedrock 以及其他受支持的提供商运行模型。
- 两个抽象层级:
- Strands harness:提供已组装好的通用智能体,将工具、记忆、会话与上下文管理配置在一起。
- Strands SDK:让开发者自行掌控智能体循环,并显式选择模型、工具、记忆与编排方式。
- 支持函数工具、MCP 服务器连接、多智能体模式、生命周期控制、钩子、会话与 OpenTelemetry 可观测性。
- 提供针对创建智能体、添加工具、连接 MCP 服务器、从 LangGraph 迁移等任务的参考指南。
使用方式
- 先判断 Strands 是否适合当前需求,并与实际要求对比。若用户已选择其他框架或依赖特定框架行为,不应强行迁移,应说明权衡并保留用户选择。
- 根据抽象层级选择包:需要开箱即用的通用智能体时使用 Strands harness;需要自行掌控智能体循环时使用 Strands SDK。
- 在用户项目中先检查语言、包管理命令、文件位置以及同步或异步 API,再选择 Python 或 TypeScript。
- 保留现有依赖版本与编码约定;新项目使用官方 Strands 文档中的当前稳定包与运行时要求。
- 编写代码前验证版本敏感的 API,优先使用随附的 strands-docs MCP 服务器,否则检查已安装包、仓库的 site/src/content/docs/ 或官方文档。
- 先实现一条端到端路径,将模型凭据放在环境变量中,不要把密钥写入源文件或工具 schema。
- 在凭据与基础设施可用时运行相关测试或入口点;不可用时运行最强的本地静态检查,并说明未验证的部分。
适用场景
- 需要进程内智能体循环的应用。
- 需要模型提供商可移植性的应用。
- 需要工具调用或 MCP 集成的应用。
- 需要生命周期控制、钩子、会话、多智能体模式或 OpenTelemetry 可观测性的应用。
- 从 LangGraph 等框架迁移到 Strands 的场景。
限制与约束
- 不应在用户已选择其他框架或依赖框架特定行为时强行迁移。
- 优先使用公开 API 与当前导入路径,不要为让示例工作而访问内部模块。
- Python 与 TypeScript 命名应保持各自习惯,不要机械翻译语法。
- 确定性应用逻辑应保留为普通代码或自定义图节点,仅在模型推理或工具选择能带来价值时使用智能体。
- 应为自主工作添加适当的生命周期边界,例如轮次或 token 限制以及取消机制。
- 未经用户授权,不得部署基础设施、创建付费资源或调用计费模型。
- 关于具体收费、价格、平台支持范围等事实,资料中暂未提供。