Strands Agents 是什么?
摘要:Strands Agent AWS 最新开源的 Strands Agents SDK 是一款采用模型驱动架构的 AI 代理开发框架,旨在通过极简开发方式,帮助开发者快速构建和部署 AI 代理。它将代理的核心要素——模型、工具和提示词抽象化,
Strands Agent
AWS 最新开源的 Strands Agents SDK 是一款采用模型驱动架构的 AI 代理开发框架,旨在通过极简开发方式,帮助开发者快速构建和部署 AI 代理。它将代理的核心要素——模型、工具和提示词抽象化,开发者只需几行代码,即可构建从简单任务到复杂多代理协作的多样化 AI 应用。
与那些要求开发者为智能体(agent)定义复杂工作流程的框架相比,Strands 通过充分利用最先进的模型在规划、思维链、工具调用和反思方面的能力,大大简化了智能体的开发过程。使用 Strands,开发者只需在代码中定义一个提示词(prompt)和一个可用工具列表,即可构建一个智能体,并能够在本地进行测试后部署到云端。正如 DNA 的双螺旋结构一样,Strands(在分子生物学中,"strand" 指的是 DNA 或 RNA 分子的单链) 将智能体的两个核心部分:模型和工具 —— 紧密地连接在一起。Strands 利用模型强大的推理能力来规划智能体的下一步行动,并自动调用相应的工具。对于更复杂的智能体应用场景,开发者还可以在 Strands 中自定义智能体的行为。例如,你可以指定工具的选择方式、自定义上下文管理机制、选择会话状态和记忆的存储位置,甚至构建多智能体协同的应用[1]。
Strands 具备高度可移植性,可以在任何环境中运行,并支持所有具备推理和工具调用能力的模型。借助 LiteLLM,它兼容包括 Amazon Bedrock、Anthropic、Ollama、Meta 等在内的主流模型提供商,展现出极强的灵活性和扩展性。目前Strands Agents 的开源社区也十分活跃,吸引了包括 Anthropic、Meta 等在内的多家公司参与共建。开发者可以通过 GitHub 获取最新动态、参与社区讨论和贡献代码。
本文首先会介绍 Strands Agents的基本特性,并以示例的方式展示使用方法。最后通过一个示例展示通过使用Strands Agents SDK,如何简单且快速的构建一个基于Web检索的QAbot。
1. 核心概念
1.1. Agent Loop
智能体循环(Agent Loop)是 Strands Agents SDK 中的一个核心概念,它通过思考推理(reasoning)、工具调用和响应生成的循环过程,使智能体能够展现出智能化和自主的行为。它支持复杂的多步骤推理和行动,并无缝集成工具和语言模型。Agent Loop的流程如下图所示:
其执行流程可以总结为如下流程:
接收用户输入和上下文信息
使用LLM处理输入
决定是否使用工具来收集信息或执行操作
执行工具并接收结果
用新信息继续推理
生成最终响应或再次循环
这个循环可能在一次用户交互中重复多次,使Agent能够执行复杂的多步骤推理和自主行为。
Event Loop Cycle
Event Loop Cycle是协调information flow的核心机制,由event_loop_cycle() 函数实现:
def event_loop_cycle(
model: Model,
system_prompt: Optional[str],
messages: Messages,
tool_config: Optional[ToolConfig],
callback_handler: Any,
tool_handler: Optional[ToolHandler],
tool_execution_handler: Optional[ParallelToolExecutorInterface] = None,
**kwargs: Any,
) -> Tuple[StopReason, Message, EventLoopMetrics, Any]:
# ... implementation details ...
它负责:
使用语言模型处理消息
处理工具执行请求
管理对话状态
通过指数退避机制处理错误并进行重试
收集指标和追踪数据以实现系统可观测性
事件循环周期采用递归结构,使得在使用工具时可以进行多次迭代,同时在整个对话过程中保持状态的一致性。
