写点什么

Bedrock AgentCore Python SDK:零基础设施部署 AI 代理的终极方案

作者:qife122
  • 2025-11-29
    福建
  • 本文字数:4525 字

    阅读完需:约 15 分钟

Bedrock AgentCore SDK

<div align="center"><a href="https://aws.amazon.com/bedrock/agentcore/"><img width="150" height="150" alt="Bedrock AgentCore Logo" src="https://github.com/user-attachments/assets/b8b9456d-c9e2-45e1-ac5b-760f21f1ac18" /></a>


<h1>Bedrock AgentCore SDK</h1><h2>将本地 AI 代理零基础设施部署到 Bedrock AgentCore</h2>


<div><a href="https://github.com/aws/bedrock-agentcore-sdk-python/graphs/commit-activity"><img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/m/aws/bedrock-agentcore-sdk-python"/></a>


<a href="https://github.com/aws/bedrock-agentcore-sdk-python/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/aws/bedrock-agentcore-sdk-python"/></a><a href="https://pypi.org/project/bedrock-agentcore"><img alt="PyPI version" src="https://img.shields.io/pypi/v/bedrock-agentcore"/></a><a href="https://python.org"><img alt="Python versions" src="https://img.shields.io/pypi/pyversions/bedrock-agentcore"/></a>
复制代码


</div></div>

项目概述

Bedrock AgentCore Python SDK 是一个完整的 AI 代理开发框架,支持将本地开发的 AI 代理无缝部署到 AWS Bedrock AgentCore 服务,无需管理任何基础设施。该 SDK 提供了运行时框架、内存管理、身份验证和工具集成等核心功能。

功能特性

🚀 核心功能

  • 零基础设施部署:将本地 AI 代理直接部署到 Bedrock AgentCore 服务

  • 完整运行时框架:基于 Starlette 的 Web 服务器,包装用户函数为 HTTP 端点

  • 智能内存管理:支持短期会话记忆和长期语义记忆

  • 多策略记忆系统:语义记忆、摘要记忆、用户偏好记忆和自定义记忆策略

🔐 安全认证

  • OAuth2 身份验证:支持机器对机器(M2M)和用户联邦认证流程

  • API 密钥认证:灵活的 API 密钥管理装饰器

  • AWS SigV4 签名:所有 API 通信的安全认证

  • TLS 1.2+强制:确保所有通信的安全性

🛠️ 工具集成

  • 浏览器沙箱:使用 Playwright 进行安全的 Web 自动化

  • 代码解释器:安全的代码执行沙箱环境

  • 会话管理:完整的多用户、多会话对话管理

  • 分支对话:支持创建和管理对话分支

📊 记忆能力

  • 短期记忆(STM):会话内的对话事件持久化

  • 长期记忆(LTM):跨会话的语义记忆和用户偏好

  • 智能检索:基于相关性的记忆记录检索

  • 多命名空间:灵活的记忆数据组织

安装指南

系统要求

  • Python 3.8+

  • AWS 账户和凭证配置

  • Bedrock AgentCore 服务访问权限

安装步骤

# 基础安装pip install bedrock-agentcore
# 包含Strands代理集成pip install 'bedrock-agentcore[strands-agents]'
# 开发模式安装git clone https://github.com/aws/bedrock-agentcore-sdk-python.gitcd bedrock-agentcore-sdk-pythonuv syncsource .venv/bin/activate
复制代码

环境配置

# 配置AWS凭证export AWS_ACCESS_KEY_ID=your_access_keyexport AWS_SECRET_ACCESS_KEY=your_secret_keyexport AWS_REGION=us-west-2
# 可选:自定义端点(用于测试环境)export BEDROCK_AGENTCORE_DP_ENDPOINT=your_data_plane_endpointexport BEDROCK_AGENTCORE_CP_ENDPOINT=your_control_plane_endpoint
复制代码

使用说明

基础使用示例

from bedrock_agentcore.runtime import BedrockAgentCoreAppfrom bedrock_agentcore.runtime import RequestContext
# 创建应用实例app = BedrockAgentCoreApp()
@app.run()async def my_agent_handler(context: RequestContext, input_text: str) -> str: """简单的AI代理处理器""" return f"处理后的响应: {input_text}"
# 启动应用if __name__ == "__main__": app.start()
复制代码

记忆会话管理

from bedrock_agentcore.memory import MemorySessionManagerfrom bedrock_agentcore.memory.constants import MessageRole
# 初始化会话管理器manager = MemorySessionManager( memory_id="my-memory-123", region_name="us-east-1")
# 创建会话session = manager.create_session( actor_id="user-123", session_id="conversation-456")
# 添加对话轮次await session.add_turn( user_message="今天天气怎么样?", assistant_message="今天天气晴朗,温度适宜。")
# 检索相关记忆records = await session.retrieve_memory_records( query="天气信息", top_k=5)
复制代码

身份验证集成

from bedrock_agentcore.auth import requires_access_token
@requires_access_token( provider_name="my-oauth-provider", scopes=["read:data", "write:data"], auth_flow="USER_FEDERATION")async def protected_operation(access_token: str, data: dict) -> dict: """需要OAuth2访问令牌的保护操作""" # 使用access_token调用受保护的API return {"status": "success", "data": data}
复制代码

浏览器自动化

from bedrock_agentcore.tools import browser_session
async def web_automation_example(): """浏览器自动化示例""" async with browser_session(region="us-west-2") as browser: # 导航到网页 await browser.goto("https://example.com") # 执行页面操作 content = await browser.get_content() return f"页面内容: {content}"
复制代码

核心代码解析

1. 运行时应用核心

"""BedrockAgentCore Runtime SDK - 构建和部署AI代理的Python SDK"""
from .runtime import BedrockAgentCoreApp, BedrockAgentCoreContext, RequestContextfrom .runtime.models import PingStatus
__all__ = [ "BedrockAgentCoreApp", "RequestContext", "BedrockAgentCoreContext", "PingStatus",]
复制代码


代码说明


  • BedrockAgentCoreApp:主应用类,管理代理生命周期

  • RequestContext:HTTP 请求上下文,包含会话和请求元数据

  • BedrockAgentCoreContext:代理身份上下文,管理访问令牌和请求头

  • PingStatus:健康检查状态枚举,支持 HEALTHY 和 HEALTHY_BUSY 状态

2. 记忆客户端实现

"""AgentCore Memory SDK - 记忆操作的高级客户端"""
class MemoryClient: """Bedrock AgentCore Memory的高级客户端,提供基本操作""" # AgentCore Memory数据平面方法 _ALLOWED_GMDP_METHODS = { "retrieve_memory_records", "get_memory_record", "delete_memory_record", "list_memory_records", "create_event", "get_event", "delete_event", "list_events", } # AgentCore Memory控制平面方法 _ALLOWED_GMCP_METHODS = { "create_memory", "get_memory", "list_memories", "update_memory", "delete_memory", "list_memory_strategies", }
def __init__(self, region_name: Optional[str] = None): """初始化Memory客户端""" self.region_name = region_name or boto3.Session().region_name or "us-west-2" self.gmcp_client = boto3.client("bedrock-agentcore-control", region_name=self.region_name) self.gmdp_client = boto3.client("bedrock-agentcore", region_name=self.region_name)
复制代码


代码说明


  • 支持数据平面和控制平面两种操作模式

  • 自动处理 AWS 区域检测,默认回退到 us-west-2

  • 提供完整的记忆 CRUD 操作和策略管理

3. 身份验证装饰器

"""Bedrock AgentCore SDK的身份验证装饰器和工具"""
def requires_access_token( *, provider_name: str, into: str = "access_token", scopes: List[str], on_auth_url: Optional[Callable[[str], Any]] = None, auth_flow: Literal["M2M", "USER_FEDERATION"], callback_url: Optional[str] = None, force_authentication: bool = False, token_poller: Optional[TokenPoller] = None,) -> Callable: """在调用装饰函数之前获取OAuth2访问令牌的装饰器""" def decorator(func: Callable) -> Callable: client = IdentityClient(_get_region())
async def _get_token() -> str: """通用的令牌获取逻辑""" return await client.get_token( provider_name=provider_name, agent_identity_token=await _get_workload_access_token(client), scopes=scopes, on_auth_url=on_auth_url, auth_flow=auth_flow, callback_url=callback_url, force_authentication=force_authentication )
复制代码


代码说明


  • 支持 OAuth2 M2M 和用户联邦两种认证流程

  • 自动处理令牌获取和刷新

  • 提供灵活的回调 URL 和范围配置

  • 支持自定义令牌轮询器实现

4. 会话管理器

"""包含AgentCore Memory交互的会话管理类"""
class MemorySessionManager: """管理AWS Bedrock AgentCore的会话和记忆操作""" def __init__(self, memory_id: str, region_name: str = "us-west-2"): """初始化MemorySessionManager""" self.memory_id = memory_id self.region_name = region_name self.client = MemoryClient(region_name=region_name) async def create_session(self, actor_id: str, session_id: str) -> "MemorySession": """为指定参与者和会话创建新的MemorySession""" return MemorySession( memory_id=self.memory_id, actor_id=actor_id, session_id=session_id, client=self.client )
复制代码


代码说明


  • 简化多会话和多参与者的记忆管理

  • 自动处理 memory_id、actor_id 和 session_id 参数

  • 提供 LLM 集成的内置回调模式

  • 支持对话分支和替代流程管理

5. 浏览器客户端

"""与浏览器沙箱服务交互的客户端"""
class BrowserClient: """与AWS浏览器沙箱服务交互的客户端""" def __init__(self, region: str) -> None: """为指定AWS区域初始化浏览器客户端""" self.region = region self.data_plane_service_name = "bedrock-agentcore" self.client = boto3.client( self.data_plane_service_name, region_name=region, endpoint_url=get_data_plane_endpoint(region) ) self._identifier = None self._session_id = None
复制代码


代码说明


  • 提供安全的浏览器自动化环境

  • 基于 Playwright 的 Web 交互能力

  • 支持实时视图和会话管理

  • 自动处理凭证签名和安全性


Bedrock AgentCore Python SDK 为 AI 代理开发提供了完整的企业级解决方案,从本地开发到云端部署的全流程支持,让开发者能够专注于业务逻辑而不必担心基础设施复杂性。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Bedrock AgentCore Python SDK:零基础设施部署AI代理的终极方案_机器学习_qife122_InfoQ写作社区