使用基岩试剂芯绞合试剂
一个基于Bedrock AgentCore的代理,具有网络搜索功能,使用AgentCore CLI部署。
概述
此项目使用以下方式演示代理部署:
- AWS基岩代理核心 用于代理运行时和内存管理
- AgentCore命令行界面 用于部署和管理
- Docker/ECR 用于容器化代理部署
- Strands代理商 代理编排框架
- 网页搜索 通过DuckDuckGo实现的功能
快速开始
先决条件
- AWS CLI配置了适当的凭据
- Python 3.12+
- Docker已安装
agentcore已安装CLI(pip install bedrock-agentcore)uv用于依赖关系管理(或pip)
1.安装依赖项
uv sync
# or: pip install -e .2.配置环境
创建一个 .env 使用API密钥文件:
ANTHROPIC_API_KEY=your_anthropic_key_here
AWS_REGION=us-east-1
AGENT_NAME=websearch_agent3.部署代理
agentcore launch这将:
- 构建Docker容器
- 创建ECR存储库(如果需要)
- 推送容器图像
- 创建/更新代理运行时
- 自动创建内存和内存策略
- 配置执行角色
这 launch 命令处理一切,无需手动创建内存或其他资源。
4.测试您的代理
agentcore invoke \
--agent websearch_agent \
--session-id "test-$(uuidgen | tr -d '-')" \
'{"prompt":"Hello! Please introduce yourself."}'备注:会话ID的长度必须至少为33个字符。
项目结构
.
├── agents/ # Agent implementation
│ └── orchestration_agent.py
├── tools/ # Agent tools
│ └── websearch.py
├── config/ # Configuration utilities
│ └── memory_config.py
├── .bedrock_agentcore/ # Container configuration (auto-generated)
│ └── websearch_agent/
│ └── Dockerfile
├── agent_handler.py # Agent entry point
├── pyproject.toml # Python dependencies
├── .bedrock_agentcore.yaml # AgentCore configuration
└── .env # Local environment variables特性
代理能力
- 通过DuckDuckGo进行网络搜索集成
- 会话记忆(短期和长期)
- 用户事实和偏好的语义记忆
- 自动对话摘要
- 开放遥测仪器
记忆策略
- 短时记忆:最近的对话上下文(10条消息,4000个令牌)
- LTM(长期记忆):扩展对话历史记录(100条消息,20000个令牌)
- 语义记忆:通过嵌入存储的用户事实、偏好和上下文
- 摘要:使用Claude自动进行对话摘要
发展
局部测试
您可以在本地测试代理处理程序:
# Set up environment
source .env # or use dotenv
# Run the handler
python agent_handler.py更新代理
更改代码后:
# Redeploy (builds new container and updates runtime)
agentcore launch
# Test the changes
agentcore invoke --agent websearch_agent --session-id "test-$(uuidgen | tr -d '-')" '{"prompt":"Test my changes"}'查看日志
# View real-time logs
aws logs tail /aws/bedrock-agentcore/runtimes/$(agentcore list --format json | jq -r '.[0].agent_id')-DEFAULT --follow
# Or check the CloudWatch console配置
.bodyrock_agentcore.yaml
AgentCore CLI使用此文件配置代理部署。关键设置:
platform:容器平台(linux/arm64或linux/amd64)execution_role:代理执行的IAM角色(如果未指定,则自动创建)network_mode:公共或VPCmemory.mode:STM_AND_LTM、仅STM_或无observability.enabled:启用CloudWatch日志记录
环境变量
代理使用这些环境变量(在中设置 .env 文件):
ANTHROPIC_API_KEY:Claude API访问必需AWS_REGION:AWS服务区域(默认:us-east-1)AGENT_NAME:您的代理人姓名BEDROCK_AGENTCORE_MEMORY_ID:首次部署后由AgentCore CLI自动设置
常用命令
# List deployed agents
agentcore list
# Get agent details
agentcore describe --agent websearch_agent
# Invoke agent
agentcore invoke --agent websearch_agent --session-id "" '{"prompt":""}'
# View deployment status
agentcore status --agent websearch_agent
# Delete agent (keeps memory)
agentcore delete --agent websearch_agent内存管理
查看内存
# Get memory ID from .bedrock_agentcore.yaml or setup output
MEMORY_ID="websearch_agent_memory-xxxxx"
# Describe memory
aws bedrock-agentcore describe-memory --memory-id $MEMORY_ID
# List memory strategies
aws bedrock-agentcore list-memory-strategies --memory-id $MEMORY_ID清除内存
# Clear all events from memory (preserves strategies)
aws bedrock-agentcore delete-memory-events --memory-id $MEMORY_ID故障排除
“未找到端点”错误
这通常意味着代理尚未部署或部署失败。
修复:运行 agentcore launch
代理返回500错误
检查CloudWatch日志以了解实际错误:
aws logs tail /aws/bedrock-agentcore/runtimes/-DEFAULT --follow常见原因:
- 缺少环境变量(请检查是否设置了ANTHROPIC_API_KEY)
- 代理代码中的导入错误
- 内存ID不匹配
容器构建失败
检查Docker是否正在运行,以及您是否具有正确的权限:
docker ps # Verify Docker is running
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 未找到内存
内存在以下过程中自动创建 agentcore launch。如果您遇到内存错误,请检查:
- 中的内存配置
.bedrock_agentcore.yaml是正确的 - 代理已成功部署
- 检查中的内存ID
.bedrock_agentcore.yaml在...之下memory.memory_id
安全
- API密钥:存储在
.env本地文件(永远不要提交到git) - IAM角色:AgentCore CLI自动创建具有最低权限的执行角色
- ECR:安全存储在您的AWS帐户中的容器映像
- 网络:代理可以在VPC或公共模式下运行
- 秘密:考虑将AWS Secrets Manager用于生产部署
清理
删除代理和资源
agentcore destroy这将删除代理运行时、内存和相关资源。
删除ECR存储库(可选)
如果要完全删除容器映像:
aws ecr delete-repository --repository-name bedrock-agentcore-websearch_agent --force --region us-east-1文档
许可证
\[您的许可证在这里\]
贡献
\[您的投稿指南请点击此处\]
