1、简介

Strands Agents 是一个专为构建生产级、多智能体AI系统而设计的开发框架。其核心定位是让开发者能够用少量代码快速搭建出安全、可扩展且能与AWS服务深度集成的智能体应用。他的网站在https://strandsagents.com/

2、核心特点与优势

  1. 模型驱动与提供商无关

    • 它利用模型自身的推理能力进行任务规划、协调和反思。

    • 支持任何主流的LLM提供商,包括Amazon Bedrock、OpenAI、Anthropic以及你之前了解的本地模型(如Ollama)。你可以在不修改核心代码的情况下切换不同的模型或提供商。

  2. 专为生产环境设计

    • 它提供了企业级的安全、可观测性和治理能力。例如,与AWS服务(如Bedrock Guardrails、OpenTelemetry)的原生集成,确保了智能体行为的安全可控。

    • 强调“开箱即用”,能直接部署到AWS的生产环境(如Bedrock AgentCore、EKS、Lambda等)。

  3. 简洁的多智能体编排

    • 提供了简单的编程原语来实现复杂的多智能体协作模式,如任务交接(handoffs)、群体智能(swarms)和图工作流(graph workflows),并内置了对A2A(Agent-to-Agent)通信协议的支持。

    • 客户证言中多次提到,利用这些模式(如“Agent-as-Tool”和“Swarm”),开发团队能够快速将多个智能体组合起来,解决复杂的业务问题。

  4. 显著的商业价值

    • 从Eightcap CIO的证言中可以看到,使用Strands后,其问题调查时间从平均30分钟降至45秒,调查质量提升94%,并节省了500万美元的运营成本。这直观地展示了其在提升效率和降低成本方面的巨大潜力。

3、使用Ollama构建一个Agent

3.1 安装

第一步、安装strandsagents

pip install 'strands-agents[ollama]' strands-agents-tools

第二步,安装Ollama

可以参考https://ollama.com/

第三步、加载大模型

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 消耗和延迟。

  • 提供商适配层的代价:为了保持“模型无关”的特性,框架需要维护一个适配层。这带来了几个问题:

    1. 能力折衷:通用接口可能无法暴露特定模型的独特优化或实验性功能。

    2. 细节差异处理:不同提供商在 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/

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐