使用 Amazon Strands Agents 开发代理 🚀
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,使用 Python 和 TypeScript,旨在创建和运行代理,能够从本地测试扩展到生产环境。
- 开源 SDK。
- 支持 创建 与 运行 代理。
- 兼容简单和复杂的用例。
- 可在本地和生产环境中运行。
官方文档可在以下地址获取:
操作模型
Strands 代理通过三个关键组件协同工作:
-
指令(目的)
- 提供一段自然语言指令,定义代理的任务。
- 示例:“回答最终用户的提问”。
- Chain‑of‑Thought (CoT) 在指令中:
- 角色:“你是专注于 X 的助理…”。
- 约束:“如果知识库中没有数据,绝不要捏造”。
- 输出格式:“如果查询是技术类,请始终以 JSON 格式返回”。
-
模型(大脑)
- 代理使用大型语言模型(LLM)作为推理核心。
-
工具(动作)
- 代理可以调用的外部能力,以完成任务。
- 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 充当用户与模型之间的“安全网”。它主要在四个层面进行配置:
- 内容过滤器 – 阻止仇恨、侮辱、色情或暴力等类别的内容。
- 拒绝主题(Denied Topics) – 防止代理讨论特定主题(例如,“不要谈论加密货币”或“不要提及竞争对手”)。
- 个人信息过滤器(PII) – 检测并匿名化身份证号、信用卡或电子邮件等数据。
- 词语过滤器 – 阻止你自定义的特定词汇。
示例 1
为电子产品店的客服助理配置拒绝主题。
主题名称: 与竞争对手的比较。
主题定义:
“任何用户询问直接竞争对手(如 Best Buy、MediaMarkt 或 Amazon 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 类型 | 操作 |
|---|---|
BLOCK(如果检测到电子邮件则阻止输入) 或 MASK(将电子邮件替换为 [EMAIL]) |
预期结果
- 用户: “你好,我的邮箱是 xx.yyy@gmail.com,能帮我吗?”
- 模型收到的内容: “你好,我的邮箱是
[EMAIL],能帮我吗?”
构建一个可用的代理只是起点;真正的挑战在于让它 安全、精准且可扩展。实现 Guardrails 并优化你的知识库,将决定概念验证与可投入生产的解决方案之间的差距。把你的代理提升到新水平,开始构建真正能改变业务的生成式 AI 应用吧!