sdk-python
AWS 官方 AI Agent 开发框架,几行代码即可构建具备工具调用和多模型支持的可协作智能体
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AWS 官方 AI Agent 开发框架,几行代码即可构建具备工具调用和多模型支持的可协作智能体
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你只需要写十几行 Python 代码,就能让 AI 拥有搜索网页、执行计算、读写文件甚至调用 MCP 工具的能力——这不是魔法,而是 Strands Agents 正在做的事。
大多数人对 AI Agent 的印象,还停留在「需要一个庞大的代码库、复杂的配置、大量工程经验」才能搭建。但在 Strands 的世界里,一切从简。安装 SDK 后,只需要这样一段代码,就能运行一个带工具调用能力的 AI Agent:
from strands import Agent
from strands_tools import calculator
agent = Agent(tools=[calculator])
agent("What is the square root of 1764")
运行后,Agent 会自动理解「计算器」这个工具的用途,在需要时调用它,返回正确结果。这就是 Strands 倡导的「Model-Driven」核心理念:不要用繁琐的配置束缚模型,让模型自己驱动行为。
Strands Agents 由 AWS(亚马逊云服务)官方维护,诞生于 2025 年中。这是一个多语言 monorepo 仓库,包含 Python SDK、TypeScript SDK、WebAssembly 绑定以及配套的文档站点。截至分析时,仓库已有超过 5982 颗星,857 个 Fork,5 位核心贡献者,发布了 v1.41.0 版本(2026年5月21日)。
AWS 推出 Strands 的背景很清晰:在 Claude、GPT 等大语言模型能力飞速提升的当下,如何让开发者快速将模型能力封装成可部署的智能体应用,成为刚需。LangChain 虽然功能丰富,但学习曲线陡峭;相比之下,Strands 刻意追求简洁,让 Agent 开发回归本质——定义工具 + 选择模型 + 交给 Agent。
Strands 的 Agent 核心是一个事件循环(Event Loop),从 strands-py/src/strands/ 目录的代码结构可以看出,整个框架高度模块化:
agent/ — Agent 主循环与状态管理(agent.py、base.py、state.py)models/ — 多模型接入层(Bedrock、Anthropic、Gemini、Ollama、LiteLLM 等)tools/ — 工具系统(Python 装饰器 @tool 定义工具)multiagent/ — 多 Agent 协作session/ — 会话状态管理telemetry/ — 可观测性(OpenTelemetry 集成)plugins/ — 插件扩展系统Strands 支持 12+ 种模型提供商,默认是 Amazon Bedrock(Claude on AWS)。但这不是绑定——通过可选依赖,你可以自由切换:
| 模型 | 接入方式 | 备注 |
|---|---|---|
| Amazon Bedrock | BedrockModel(默认) | Claude 4 Sonnet 等 |
| Anthropic | pip install strands-agents[anthropic] | 直连 API |
| Google Gemini | pip install strands-agents[gemini] | Gemini 2.5 Flash 等 |
| OpenAI | pip install strands-agents[openai] | GPT-4o 等 |
| Ollama | pip install strands-agents[ollama] | 本地模型 |
| LiteLLM | pip install strands-agents[litellm] | 统一网关 |
这种设计意味着:你可以在本地用 Ollama 调试,开发完成后无缝切换到 Bedrock 生产部署,代码几乎不需要改动。
Strands 的工具系统设计得非常优雅。使用 @tool 装饰器,任意 Python 函数即可成为 Agent 可调用的工具:
from strands import Agent, tool
@tool
def word_count(text: str) -> int:
"""Count words in text. This docstring is used by the LLM."""
return len(text.split())
agent = Agent(tools=[word_count])
更方便的是,Strands 支持热加载:load_tools_from_directory=True 可以让 Agent 自动监控 ./tools/ 目录,文件改动后自动重载,开发体验对标 Next.js 的 HMR(热模块替换)。
Strands 内置了 Model Context Protocol(MCP)客户端。通过 MCP,Agent 可以直接调用 AWS 官方文档 MCP Server 等数千个社区预置工具,而无需自己实现:
from strands.tools.mcp import MCPClient
from mcp import stdio_client, StdioServerParameters
aws_docs_client = MCPClient(
lambda: stdio_client(StdioServerParameters(
command="uvx", args=["awslabs.aws-documentation-mcp-server@latest"]
))
)
Strands 的 BidiAgent(实验性)支持双向流式交互:模型可以边思考边输出,用户可以随时打断、补充输入。目前支持 Amazon Nova Sonic v1/v2、Google Gemini Live、OpenAI Realtime API。
Strands 的代码质量在开源 Agent 框架中属于较高水准:
tests/)+ 集成测试(tests_integ/)pyproject.toml 显示依赖管理非常严格:每个依赖都限定了版本范围(如 boto3>=1.26.0,<2.0.0),避免升级破坏兼容性。
对于 AI 爱好者:
Strands 提供了 strands-agents-tools 预置工具包,包含计算器、网页搜索、终端命令等常用工具。安装后直接 import 即可使用,无需了解底层原理。
对于 AI 开发者:
如果你习惯自己造轮子,@tool 装饰器让自定义工具变得异常简单。配合热加载,开发 Agent 工具的体验接近 TDD:写工具函数 → 扔进 ./tools/ → Agent 自动发现 → 直接调用。
需要客观指出 Strands 的一些局限:
不是 RAG 框架:Strands 专注于 Agent 编排,不提供向量数据库或检索能力。RAG 场景需要配合 LangChain/LlamaIndex 等。
默认依赖 AWS:虽然支持多模型,但默认 provider 是 Bedrock,新用户需要理解 AWS 凭证配置和区域限制。
无 Docker 支持:纯 pip 安装,无容器化部署选项。对于需要环境隔离的生产场景,需要自己处理。
实验性功能风险:BidiAgent 等高级特性标注为「Experimental」,API 可能随时变更,不适合生产环境直接依赖。
Strands 的出现,折射出 AI Agent 开发领域的一个趋势:从「什么都支持」向「做得少但做精」转变。LangChain 的复杂性让很多新手望而却步,而 Strands 通过刻意做减法,降低了 Agent 开发的心理门槛。
同时,Strands 对 MCP 协议的原生支持,显示出它押注于「工具生态」而非「自己造工具」。随着 MCP 社区工具的丰富,Strands 可以成为连接模型与工具的最佳中间层。
增长数据也印证了这一点:从 2025 年 5 月仓库创建,到 2026 年 5 月已有近 6000 星、857 Fork、532 个 open issue(说明社区活跃度高),显示出强劲的发展势头。
本文基于 GitHub 仓库 v1.41.0 版本分析生成,数据来源:GitHub API、README.md、pyproject.toml