Strands 代理 + Agent Core AWS
Source: Dev.to
目录
先决条件
在开始之前,请确保拥有:
-
AWS 权限
- root 用户或拥有特权角色(
AdministratorAccess)的用户可以跳过此步骤。 - 其他用户需要附加 starter toolkit 的策略以及托管策略
AmazonBedrockAgentCoreFullAccess。
- root 用户或拥有特权角色(
-
AWS CLI
- 版本 2.0 或更高。
- 使用
aws configure进行配置。
-
Amazon Bedrock 模型访问
- 在所需区域启用 Claude 3.7 Sonnet:
AWS Management Console → Amazon Bedrock → Model access。
- 在所需区域启用 Claude 3.7 Sonnet:
-
Python
- Python 3.10 或更高。
-
AWS 区域一致性
⚠️ 重要:以下所有位置必须使用 相同的区域:aws configure中的默认区域。- 启用 Amazon Bedrock 模型访问的区域。
Toolkit 安装
步骤 1:创建虚拟环境
# 创建虚拟环境
python -m venv .venv
# 激活虚拟环境
# macOS/Linux:
source .venv/bin/activate
# Windows:
# .venv\Scripts\activate
步骤 2:安装所需包
# 安装包(版本 0.1.21 或更高)
pip install "bedrock-agentcore-starter-toolkit>=0.1.21" strands-agents boto3
创建代理
步骤 1:创建代理文件
创建一个名为 agentcore_starter_strands.py 的文件,并放入代理代码。
代理特性:
- 与 AgentCore Memory(短期和长期)集成。
- 使用 Code Interpreter 的计算工具。
- 会话管理。
- 可自定义提示系统。
步骤 2:创建依赖文件
# requirements.txt
strands-agents
bedrock-agentcore
配置与部署
步骤 1:配置代理
agentcore configure -e agentcore_starter_strands.py
按照交互式提示回答:
- Execution Role:直接回车,系统会自动创建具备所需权限的角色。
- ECR Repository:直接回车创建仓库,或提供已有的 URI。
- Requirements File:确认使用
requirements.txt。 - OAuth Configuration:输入
no。 - Request Header Allowlist:输入
no。 - Memory Configuration:
- 若已有记忆,选择一个或直接回车创建新记忆。
- 创建新记忆时,输入
yes启用长期记忆提取。 - 短期记忆默认始终启用。
步骤 2:在 AgentCore 上部署
agentcore launch
此命令会:
- 预配记忆资源(STM + LTM)。
- 使用依赖构建 Docker 镜像。
- 将镜像推送至 ECR 仓库。
- 部署带 X‑Ray 的 AgentCore 运行时。
- 自动配置 CloudWatch Transaction Search。
- 启用带追踪收集的端点。
预期输出:
✅ Memory created: bedrock_agentcore_memory_ci_agent_memory-abc123
Observability is enabled, configuring Transaction Search...
✅ Transaction Search configured: resource_policy, trace_destination, indexing_rule
🔍 GenAI Observability Dashboard:
https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#gen-ai-observability/agent-core
✅ Container deployed to Bedrock AgentCore
Agent ARN: arn:aws:bedrock-agentcore:us-west-2:123456789:runtime/starter_agent-xyz
步骤 3:检查配置(出现错误时)
# 查看已部署的配置
cat .bedrock_agentcore.yaml
# 检查资源预配状态
agentcore status
监控部署
检查代理状态
agentcore status
显示信息:Memory ID、状态(CREATING → ACTIVE)、类型(STM+LTM)、代理 ARN、观察仪表板 URL、运行时日志路径等。
等待记忆激活
⏱️ 预配通常需要 2‑3 分钟。
# 每 30 秒重复一次,直至状态为 ACTIVE
agentcore status
测试记忆和代码解释器
短期记忆(STM)
# 第一次调用 – 存储信息
agentcore invoke '{"prompt": "我的名字是 Juan"}'
# 同一会话的第二次调用 – 检索信息
agentcore invoke '{"prompt": "我的名字是什么?"}'
预期响应:“你的名字是 Juan。”
长期记忆(LTM)
⏱️ AgentCore 会在后台进行提取;在存储事实后等待 10‑30 秒。
# 会话 1:存储事实
agentcore invoke '{"prompt": "我的邮箱是 usuario@ejemplo.com,我是 AgentCore 的用户"}'
# 等待提取完成
sleep 20
# 会话 2:新会话检索已提取的事实
SESSION_ID=$(python -c "import uuid; print(uuid.uuid4())")
agentcore invoke '{"prompt": "你对我了解些什么?"}' --session-id $SESSION_ID
预期响应:
- “你的邮箱是 usuario@ejemplo.com。”
- “看起来你是 AgentCore 的用户。”
Code Interpreter
# 存储数据
agentcore invoke '{"prompt": "我的数据集包含值:23, 45, 67, 89, 12, 34, 56。"}'
# 创建可视化
agentcore invoke '{"prompt": "基于文本创建一个柱状图可视化,展示我的数据集值的分布,并添加合适的标签"}'
预期结果:代理生成 matplotlib 代码并输出柱状图。
查看追踪和日志
访问 Amazon CloudWatch 仪表板
GenAI Observability 仪表板展示:
- 请求的端到端追踪。
- 代理执行流程。
- 记忆检索操作。
- Code Interpreter 执行情况。
- 代理推理步骤。
- 各组件的延迟细分。
从 agentcore status 获取仪表板 URL,或直接访问:
https://console.aws.amazon.com/cloudwatch/home
资源清理
当不再需要代理时,请删除创建的资源以避免产生费用:
# 删除记忆和运行时
agentcore delete --all
# 可选:删除 ECR 仓库
aws ecr delete-repository --repository-name --force
故障排除
- 权限错误:确认你的用户拥有
AmazonBedrockAgentCoreFullAccess策略,且执行角色具备相应权限。 - 记忆未激活:使用
agentcore logs查看日志,并确认配置的区域与模型所在区域一致。 - 容器启动失败:确保已安装 Docker,且账户在 ECR 中有足够配额。
- Code Interpreter 未生成代码:检查执行角色是否附加了
AWSLambdaBasicExecutionRole(或等效)策略。
指南结束。