使用 Amazon Strands Agents 开发代理 🚀

发布: (2025年12月20日 GMT+8 11:53)
7 min read
原文: Dev.to

I’m happy to help translate the article, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have the text, I’ll translate it into Simplified Chinese while preserving the original formatting, markdown, and any code blocks or URLs.

生成式 AI 或 代理式 AI

类型描述
生成式 AI专注于生成文本、图像、音乐、代码或其他内容。
代理式 AI能够自主做出决策的软件;可能包括内容生成。
关键代理式 AI 描述能力,而 AI 代理 则是该自主性的具体实现。

技术栈:Amazon Strands Agents

Amazon Strands Agents 是一个 开源 SDK,使用 PythonTypeScript,旨在创建和运行代理,能够从本地测试扩展到生产环境。

  • 开源 SDK。
  • 支持 创建运行 代理。
  • 兼容简单和复杂的用例。
  • 可在本地和生产环境中运行。

官方文档可在以下地址获取:

操作模型

Strands 代理通过三个关键组件协同工作:

  1. 指令(目的)

    • 提供一段自然语言指令,定义代理的任务。
    • 示例:“回答最终用户的提问”。
    • Chain‑of‑Thought (CoT) 在指令中:
      • 角色:“你是专注于 X 的助理…”。
      • 约束:“如果知识库中没有数据,绝不要捏造”。
      • 输出格式:“如果查询是技术类,请始终以 JSON 格式返回”。
  2. 模型(大脑)

    • 代理使用大型语言模型(LLM)作为推理核心。
  3. 工具(动作)

    • 代理可以调用的外部能力,以完成任务。
    • MCP 协议:Strands 使用该协议提供一种安全、标准化的“语言”,让 LLM 与数据、应用和服务进行交互。
    • 工具类别示例:文件系统、开发工具、生产力与沟通工具、专用 AI 工具等。

交互循环

代理在模型和工具之间循环交互,直至请求中指示的任务完成。该循环是 Strands 能力的核心。

交互循环示意图

工作原理:Strands Agents 如何运作?

实现过程可概括为以下实操步骤:

步骤 1 – 安装 Strands Agents

pip install strands-agents

步骤 2 – 编写代码,选择模型并配置

from strands_agents import Agent
from strands_agents.models import BedrockModel

# 选择模型(Amazon Bedrock)
model_bedrock = BedrockModel(
    model_id="anthropic.claude-3-sonnet-20240229-v1:0",
    region_name="us-east-1"
)

# 定义指令和工具(MCP)
agente_analista = Agent(
    model=model_bedrock,
    instructions=(
        "你是一个技术助理,分析服务器日志并提供解决方案。"
    ),
    tools=["fetch_logs_tool", "cloudwatch_reader"],
    max_iterations=10   # 交互循环的配置
)

步骤 3 – 运行、使用并获取输出

print("启动代理任务...")
resultado = agente_analista.run(
    "检查生产集群最近 2 小时内的关键错误。"
)

print("--- 代理最终报告 ---")
print(resultado)

为什么使用此工作流?

特性好处
交互循环代理不会在首次回答后停止;会反复使用模型和工具直至完成指令。
MCP 协议让你的 Bedrock 代理以标准方式连接文件系统或开发工具等外部系统。
可扩展性同一套代码可从本地环境迁移到 AWS 生产架构。

后续步骤

  • 探索更多 MCP 工具(数据库、外部 API 等)。
  • 使用 CoT 调整提示词,提升准确性。
  • 在生产环境中实现交互循环的监控

使用 Strands Agents,AWS 上的自主代理构建变得更加简便。

像写几行 Python 代码一样简单.*

安全与控制(Guardrails)

一个 Guardrail 充当用户与模型之间的“安全网”。它主要在四个层面进行配置:

  1. 内容过滤器 – 阻止仇恨、侮辱、色情或暴力等类别的内容。
  2. 拒绝主题(Denied Topics) – 防止代理讨论特定主题(例如,“不要谈论加密货币”或“不要提及竞争对手”)。
  3. 个人信息过滤器(PII) – 检测并匿名化身份证号、信用卡或电子邮件等数据。
  4. 词语过滤器 – 阻止你自定义的特定词汇。

示例 1

为电子产品店的客服助理配置拒绝主题。

主题名称: 与竞争对手的比较。

主题定义:

“任何用户询问直接竞争对手(如 Best BuyMediaMarktAmazon Prime Shopping)的价格、产品或服务的请求。”

自定义拦截信息:

“抱歉,作为本店的官方助理,我只能提供关于我们自有产品和服务的信息。还有什么我可以帮助您的吗?”

在你的应用中调用代理时,传入在控制台创建的 Guardrail ID,以实现实时生效。

import boto3

client = boto3.client('bedrock-agent-runtime')

def consultar_agente_con_seguridad(input_texto, session_id):
    response = client.invoke_agent(
        agentId='ID_DE_TU_AGENTE',
        agentAliasId='ALIAS_ID',
        sessionId=session_id,
        inputText=input_texto,
        # 激活之前创建的 Guardrail
        guardrailIdentifier='abc123456789',
        guardrailVersion='1',
        enableTrace=True
    )
    # 如果 Guardrail 拦截了响应,'trace' 事件会指示此情况
    # 或者输出文本会是配置的自定义拦截信息。
    return response

示例 2

配置使代理永不看到或保存用户的电子邮件(符合 GDPR)。

PII 类型操作
EMAILBLOCK(如果检测到电子邮件则阻止输入) MASK(将电子邮件替换为 [EMAIL]

预期结果

  • 用户: “你好,我的邮箱是 xx.yyy@gmail.com,能帮我吗?”
  • 模型收到的内容: “你好,我的邮箱是 [EMAIL],能帮我吗?”

构建一个可用的代理只是起点;真正的挑战在于让它 安全、精准且可扩展。实现 Guardrails 并优化你的知识库,将决定概念验证与可投入生产的解决方案之间的差距。把你的代理提升到新水平,开始构建真正能改变业务的生成式 AI 应用吧!

Back to Blog

相关文章

阅读更多 »

仓库利用的权威指南

引言 仓库本质上只是一个 3‑D 盒子。利用率只是衡量你实际使用了该盒子多少的指标。虽然物流 c...