Strands 代理 + Agent Core AWS

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

Source: Dev.to

目录

先决条件

在开始之前,请确保拥有:

  1. AWS 权限

    • root 用户或拥有特权角色(AdministratorAccess)的用户可以跳过此步骤。
    • 其他用户需要附加 starter toolkit 的策略以及托管策略 AmazonBedrockAgentCoreFullAccess
  2. AWS CLI

    • 版本 2.0 或更高。
    • 使用 aws configure 进行配置。
  3. Amazon Bedrock 模型访问

    • 在所需区域启用 Claude 3.7 Sonnet
      AWS Management Console → Amazon Bedrock → Model access
  4. Python

    • Python 3.10 或更高。
  5. 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

预期响应

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(或等效)策略。

指南结束。

Back to Blog

相关文章

阅读更多 »

切换账户

@blink_c5eb0afe3975https://dev.to/blink_c5eb0afe3975 正如大家所知,我正重新开始记录我的进展,我认为最好在一个不同的…