人工智能基础知识笔记三十六:Agent开发框架strandsagents
StrandsAgents是一个面向生产级多智能体AI系统的开发框架,支持快速构建安全可扩展的智能体应用。核心优势包括:模型无关性(支持主流LLM及本地Ollama模型)、AWS原生集成、简洁的多智能体协作模式(如任务交接/群体智能)。典型应用场景涵盖智能客服、安全自动化等领域,案例显示可显著提升效率(如Eightcap问题处理时间从30分钟降至45秒)。但存在成本控制、性能延迟等挑战,需注意生产
1、简介
Strands Agents 是一个专为构建生产级、多智能体AI系统而设计的开发框架。其核心定位是让开发者能够用少量代码快速搭建出安全、可扩展且能与AWS服务深度集成的智能体应用。他的网站在https://strandsagents.com/。
2、核心特点与优势
-
模型驱动与提供商无关
-
它利用模型自身的推理能力进行任务规划、协调和反思。
-
支持任何主流的LLM提供商,包括Amazon Bedrock、OpenAI、Anthropic以及你之前了解的本地模型(如Ollama)。你可以在不修改核心代码的情况下切换不同的模型或提供商。
-
-
专为生产环境设计
-
它提供了企业级的安全、可观测性和治理能力。例如,与AWS服务(如Bedrock Guardrails、OpenTelemetry)的原生集成,确保了智能体行为的安全可控。
-
强调“开箱即用”,能直接部署到AWS的生产环境(如Bedrock AgentCore、EKS、Lambda等)。
-
-
简洁的多智能体编排
-
提供了简单的编程原语来实现复杂的多智能体协作模式,如任务交接(handoffs)、群体智能(swarms)和图工作流(graph workflows),并内置了对A2A(Agent-to-Agent)通信协议的支持。
-
客户证言中多次提到,利用这些模式(如“Agent-as-Tool”和“Swarm”),开发团队能够快速将多个智能体组合起来,解决复杂的业务问题。
-
-
显著的商业价值
-
从Eightcap CIO的证言中可以看到,使用Strands后,其问题调查时间从平均30分钟降至45秒,调查质量提升94%,并节省了500万美元的运营成本。这直观地展示了其在提升效率和降低成本方面的巨大潜力。
-
3、使用Ollama构建一个Agent
3.1 安装
第一步、安装strandsagents
pip install 'strands-agents[ollama]' strands-agents-tools
第二步,安装Ollama
第三步、加载大模型
ollama pull llama3.2
3.2 基本用法
from strands import Agent
from strands.models.ollama import OllamaModel
# Create an Ollama model instance
ollama_model = OllamaModel(
host="http://localhost:11434",
model_id="llama3.2"
)
# Create an agent using the Ollama model
agent = Agent(model=ollama_model)
# Use the agent
agent("Tell me about AI.")
主要配置参数
根据文档,OllamaModel 支持以下关键参数:
| 参数 | 说明 | 是否必需 |
|---|---|---|
host |
Ollama 服务器的地址 | 必需 |
model_id |
要使用的 Ollama 模型标识符 | 必需 |
keep_alive |
模型在内存中的驻留时间,默认 "5m" | 可选 |
max_tokens |
生成的最大 token 数 | 可选 |
temperature |
控制生成随机性,值越高越随机 | 可选 |
top_p |
通过核采样控制生成内容的多样性 | 可选 |
stop_sequences |
停止生成的字符串序列列表 | 可选 |
options |
其他模型参数,如 top_k |
可选 |
additional_args |
请求的额外参数 | 可选 |
使用配置参数的示例:
from strands import Agent
from strands.models.ollama import OllamaModel
# Create a configured Ollama model
ollama_model = OllamaModel(
host="http://localhost:11434",
model_id="llama3.2",
temperature=0.7,
keep_alive="10m",
stop_sequences=["###", "END"],
options={"top_k": 40}
)
# Create an agent with the configured model
agent = Agent(model=ollama_model)
# Use the agent
response = agent("Write a short story about an AI assistant.")
3.2 高级用法
运行时更新配置参数,示例代码:
# Create the model with initial configuration
ollama_model = OllamaModel(
host="http://localhost:11434",
model_id="llama3.2",
temperature=0.7
)
# Update configuration later
ollama_model.update_config(
temperature=0.9,
top_p=0.8
)
3.3 结构化输出
Ollama 支持具有工具调用能力的模型的结构化输出。当使用 Agent.structured_output() 时,Strands SDK 会将 Pydantic 模型转换为兼容的 Ollama 模型能够理解的工具规范。
from pydantic import BaseModel, Field
from strands import Agent
from strands.models.ollama import OllamaModel
class BookAnalysis(BaseModel):
"""Analyze a book's key information."""
title: str = Field(description="The book's title")
author: str = Field(description="The book's author")
genre: str = Field(description="Primary genre or category")
summary: str = Field(description="Brief summary of the book")
rating: int = Field(description="Rating from 1-10", ge=1, le=10)
ollama_model = OllamaModel(
host="http://localhost:11434",
model_id="llama3.1",
)
agent = Agent(model=ollama_model)
result = agent.structured_output(
BookAnalysis,
"""
Analyze this book: "The Hitchhiker's Guide to the Galaxy" by Douglas Adams.
It's a science fiction comedy about Arthur Dent's adventures through space
after Earth is destroyed. It's widely considered a classic of humorous sci-fi.
"""
)
print(f"Title: {result.title}")
print(f"Author: {result.author}")
print(f"Genre: {result.genre}")
print(f"Rating: {result.rating}")
4、优势与缺点
4.1 核心优势
-
极速原型开发:开发者普遍反馈,使用 Strands 可以在10分钟内、用不到10行代码创建一个可运行的智能体。其简洁的
Agent类和@tool装饰器大幅降低了入门门槛。 -
模型与提供商无关:通过统一的抽象层,你可以无缝切换不同的模型提供商(如 Amazon Bedrock, OpenAI, Anthropic 或本地 Ollama 模型),而无需重写核心业务逻辑。这对于成本优化、模型能力对比或满足合规要求(如数据本地化)非常有价值。
-
企业级 AWS 原生集成:这是 Strands 最突出的优势之一。它提供了与 AWS 服务(如 Bedrock, Lambda, EKS, OpenTelemetry)的最佳集成,使得部署、安全防护(Bedrock Guardrails)和可观测性变得异常简单。多名企业 CTO 的证言都强调了这一点。
-
强大的多智能体编排:框架提供了简洁的编程原语(如 handoffs, swarms)来构建复杂的多智能体协作系统。开发者可以轻松实现“将一个智能体作为另一个智能体的工具”这种模式,以处理更复杂的任务。
-
内置工具与结构化输出:提供了
http_request等开箱即用的工具,让智能体能轻松与外界交互。同时,对结构化输出的支持非常出色,只需定义 Pydantic 模型,就能获得经过验证的 Python 对象,并利用 IDE 的类型提示。
4.2 挑战与局限
-
成本失控风险:智能体的“思考-行动”循环(Agentic Loop)可能导致无限迭代和高额 token 消耗。有开发者指出,若不设置严格限制(如
max_iterations),生产环境下的成本可能迅速失控。一个真实案例中,使用 Claude 模型生成一个静态网站花费了 35美元,远超预期。 -
非确定性与可靠性问题:这是 LLM 应用的普遍挑战。智能体的行为可能不稳定,成功率难以达到100%。上述网站生成案例中,最终仅70-80%的情况下能产出功能完整的网站。智能体可能会“话太多”,在期望的 JSON 输出外添加额外文本,需要开发者编写防御性解析代码(如正则表达式提取)。
-
性能与延迟开销:多智能体协作虽然强大,但会显著增加延迟。测试数据显示,引入一个子智能体后,总处理时间从7.2秒翻倍至14.5秒。工具调用时,每次都会传递完整的上下文(包括历史记录),这在设计上是为了保证决策的准确性,但也增加了 token 消耗和延迟。
-
提供商适配层的代价:为了保持“模型无关”的特性,框架需要维护一个适配层。这带来了几个问题:
-
能力折衷:通用接口可能无法暴露特定模型的独特优化或实验性功能。
-
细节差异处理:不同提供商在 tokenization、速率限制、错误语义等方面存在差异,适配层需要投入资源来处理这些不一致性。
-
-
生产环境配置复杂:虽然开发简单,但要将智能体投入生产,开发者仍需自行处理诸多“脏活累活”,例如:IAM 权限精细化管理、服务配额与节流(Throttling)监控、沙箱与安全隔离、以及完善的日志与可观测性配置。一位开发者的经验是,不要指望 Strands 自动解决企业级治理问题,这些必须从外部加强。
-
项目健康度隐忧:有分析指出,Strands 的 GitHub 仓库存在维护活跃度不明确、许可证信息不完整等问题,这可能给生产环境的合规与安全评估带来风险。
5、典型应用场景
Strands Agents已被成功应用于:
-
智能客服与支持:如Eightcap的全球交易平台支持。
-
安全自动化:如Zafran Security的漏洞修复自动化、Terra Security的自动化渗透测试。
-
内部效率工具:如Jit的基础设施漂移检测智能体、Smartsheet的上下文感知AI助手。
-
复杂数据集成:如Landchecker结合AWS服务开发房地产信息工具。
总的来说,Strands Agents是一个以AWS为原生环境、面向企业级应用、强调安全性与开发效率的智能体开发框架。它特别适合那些需要在云原生环境下,安全、可靠地构建和部署多智能体协作系统的团队。
参考:
https://strandsagents.com/docs/user-guide/concepts/model-providers/ollama/
更多推荐



所有评论(0)