将多模型 AI 智能体迁移到 Amazon Bedrock AgentCore 运行时
构建多模型智能体(Agentic AI)应用的企业,正面临越来越复杂的基础设施问题。要为多种模型管理容器编排、扩缩容策略、身份认证和可观测性,运维负担相当重。团队常常把大量时间花在基础设施上,而不是智能体的逻辑开发。如果开发者把智能体框架跑在自管理的基础设施上,比如配合 AWS Fargate 使用的 Amazon Elastic Container Service(Amazon ECS),就能完全掌控部署配置。不过,随着智能体工作负载不断演进、规模扩大,团队可能会转向托管运行时,以直接获得会话管理、身份认证和可观测性。Amazon Bedrock AgentCore 是一个可以在任意框架、任意模型上大规模构建、连接和优化智能体的平台。它的运行时(AgentCore runtime)是一项托管部署能力,负责容器生命周期、扩缩容、身份认证和可观测性,让开发者可以专注写智能体代码。上一篇《Agentic AI with multi-model framework using Hugging Face smolagents on AWS》介绍了如何在自管理基础设施上构建一个具备多模型编排能力的医疗 AI 智能体,本文则说明如何把它迁移到 Amazon Bedrock AgentCore runtime。迁移后基础设施管理更省心,同时保留智能体原有能力,包括三模型编排和向量增强的知识检索。
方案概览
这套方案把一个多模型医疗 AI 智能体迁移到 Amazon Bedrock AgentCore runtime,同时保留原有的智能体逻辑。智能体在单个由 AgentCore 管理的容器中处理医疗查询,横跨三个模型后端,并支持向量增强的知识检索。每个查询都可以被路由到最适合任务的模型后端。专业领域模型,比如部署在 Amazon SageMaker AI 上的 BioM-ELECTRA-Large-SQuAD2,负责处理专业的生物医学查询;基础模型(FM)则负责更广泛的医疗推理,比如 Meta 的 Llama 3.1 70B Instruct,运行在 Amazon Bedrock 上。这种思路能帮助医疗团队应对各种类型的查询,同时降低底层基础设施的运维负担。
上一篇博文中的独立版本部署在 Amazon ECS 和 AWS Fargate 上,容器编排、扩缩容、身份认证和可观测性都需要用户自己配置。AgentCore 版本则用运行时装饰器模式包装相同的智能体逻辑,上述运维工作全部由 AgentCore 运行时自动接管。Hugging Face smolagents 是一个开源 Python 库,只需几行代码就能构建和运行智能体。本方案以 Hugging Face smolagents 框架作为参考实现,以此证明 AgentCore 运行时支持任意智能体框架。采用自带智能体(BYO)的方式,你可以把现有的智能体代码直接部署到 AgentCore 运行时,无需重写,也不用适配某个特定框架。
注意:本方案仅为演示用的示例实现。生产环境中处理医疗或其他敏感查询时,应使用 Amazon Bedrock Guardrails 做内容过滤和接地校验,这是标准的安全控制手段。
架构
本方案包含以下服务和功能:
- Amazon Bedrock AgentCore 运行时:托管智能体容器的部署、扩缩容、身份认证和可观测性。
- Amazon Bedrock:使用 Meta 的 Llama 3.1 70B Instruct 模型处理复杂的医疗推理。各 AWS 区域支持的模型列表,请参阅 Amazon Bedrock 文档中的“Supported models by AWS Region”。
- Amazon SageMaker AI:使用 BioM-ELECTRA-Large-SQuAD2 处理专业生物医学查询,并托管自动扩缩容。
- Amazon OpenSearch Service:做向量相似度匹配和上下文知识检索,支持医疗知识索引。
- 容器化模型服务器:承载 BioM-ELECTRA-Large-SQuAD2,实现自托管模型部署。
- AWS Identity and Access Management (IAM):负责安全与访问控制。
注意:上一篇博文(独立版本)使用的是 Anthropic 的 Claude 3.5 Sonnet V2。本篇改用 Meta 的 Llama 3.1 70B Instruct,目的是说明 AgentCore 运行时与模型无关。选哪个模型属于实现层面的决定,而非硬性要求。
下图展示了本方案的架构,以及智能体如何跨三个模型后端进行编排。
客户 Web 界面连接到 Amazon Bedrock AgentCore 运行时,医疗代理容器就运行在这里。容器基于 Hugging Face smolagents 框架,并使用了 AgentCore 运行时的装饰器。AgentCore 运行时内置了身份管理和可观测性能力。代理负责在三个模型后端之间调度:带 BioM-ELECTRA 的 Amazon SageMaker AI、Amazon Bedrock 上 Meta 的 Llama 3.1 70B Instruct,以及一个部署了 BioM-ELECTRA 的容器化模型服务器。方案还引入了 Amazon OpenSearch Service 做向量增强的知识检索。
部署时可以根据不同场景选择后端:
- Amazon SageMaker AI:管理式端点,支持自动扩缩,可直接使用 Hugging Face Hub 上的模型。
- Amazon Bedrock:无服务器方式访问基础模型,通过 AWS API 完成复杂推理。
- 容器化模型服务器:自托管模型部署,集成 Hugging Face Hub 上的工具,可以部署在 Amazon ECS、Amazon Elastic Kubernetes Service(Amazon EKS)或其他容器环境中。
三个后端都实现了 Hugging Face Messages API 兼容,无论选择哪种模型服务,请求和响应的格式都保持一致。完整实现代码见 GitHub 仓库 sample-healthcare-agent-with-agentcore-on-aws。
将代理迁移到 AgentCore 运行时
这一节演示如何使用 AgentCore CLI,把现有的医疗 AI 代理迁移到 Amazon Bedrock AgentCore 运行时。
前置条件
部署之前,你需要准备好以下内容:
- 一个 AWS 账户,能够访问 Amazon Bedrock AgentCore 运行时,并有创建 IAM 角色和 Amazon OpenSearch Service 域的权限。
- 安装并配置好 AWS Command Line Interface(AWS CLI)2.0 或更高版本。
- Node.js 20 或更高版本(部署 CLI 需要)。
- 安装好 AWS Cloud Development Kit(AWS CDK)。
- 安装好 AgentCore CLI。
- Python 3.10 或更高版本,用于运行部署脚本。
- 安装并启动 Docker(代码执行隔离需要)。
需要访问所在 AWS 区域中的 Amazon Bedrock 模型、Amazon SageMaker AI 和 Amazon OpenSearch Service 域,并具备相应的 IAM 权限来创建和管理资源。安装 bedrock-agentcore Python SDK。本次实现使用 Python 3.10+、smolagents 框架、transformers 4.55.0+ 和 boto3。
AgentCore runtime 核心概念
Amazon Bedrock AgentCore runtime 用装饰器模式(decorator pattern)包装智能体逻辑。关键组成如下:
- BedrockAgentCoreApp:初始化 AgentCore 应用。
- @app.entrypoint:装饰器,用来标记 AgentCore runtime 收到请求时调用的函数。
- app.run():启动 AgentCore runtime 服务器。
下面的代码展示了 AgentCore 的集成方式:
from bedrock_agentcore.runtime import BedrockAgentCoreApp
app = BedrockAgentCoreApp()
@app.entrypoint
def healthcare_agent_entrypoint(payload):
user_input = payload.get("prompt", "")
model_type = payload.get("model_type", "sagemaker")
# Your existing agent logic here
agent = TripleHealthcareAgent(vector_store=vector_store)
response = agent.run(user_input, model_type=model_type)
return str(response)
if __name__ == "__main__":
app.run()
装饰器和 return 语句之间的 agent 代码,跟独立运行版本完全一样,没做改动。容器生命周期、扩缩容、身份认证、可观测性这些,AgentCore 运行时都会自动处理。
搭建项目
用 AgentCore CLI 新建一个 AgentCore 项目,再把现有 agent 加进去。
安装 AgentCore CLI:
npm install -g @aws/agentcore
创建一个新的 AgentCore 项目:
agentcore create --project-name healthcareagent --no-agent --build Container --language Python --protocol HTTP --model-provider Bedrock --memory none
把现有 agent 以「自带代码」(BYO,bring-your-own)的方式添加进来:
agentcore add agent --name healthcare_agentcore --type byo --build Container --language Python --protocol HTTP --network-mode PUBLIC --code-location ./agent-code --entrypoint healthcare_agentcore.py --framework Strands --model-provider Bedrock
注意:--framework 参数只是指定 CLI 使用的模板。实际的 agent 代码用的是 Hugging Face smolagents,它跟 AgentCore 运行时是兼容的,选哪个模板都没关系。
准备容器
在 agent 代码目录下建一个 pyproject.toml,声明依赖:
[project]
name = "healthcare-agentcore"
version = "1.0.0"
requires-python = ">=3.10"
dependencies = [
"smolagents>=1.24.0",
"transformers>=4.55.0",
"boto3>=1.37.0",
"opensearch-py>=3.1.0",
"requests-aws4auth>=1.3.1",
"bedrock-agentcore>=0.1.0",
"numpy>=1.26.0",
"requests>=2.32.0",
"docker>=7.1.0",
]
再写一个 Dockerfile:
FROM public.ecr.aws/docker/library/python:3.12-slim
RUN pip install --no-cache-dir uv
WORKDIR /app
COPY pyproject.toml ./
RUN uv pip install --system -r pyproject.toml
COPY . .
EXPOSE 8080
CMD ["python", "healthcare_agentcore.py"]
再建一个 .dockerignore,把镜像体积控制在 2 GB 以内:
venv/
.venv/
__pycache__/
.git/
项目配置好之后,只需一条 CLI 命令就能把智能体部署上去。
部署智能体:
agentcore deploy -y
CLI 会自动构建容器、推送到 Amazon Elastic Container Registry(Amazon ECR),并在 AgentCore 运行时中创建对应的智能体。整个部署过程大约需要 10 到 15 分钟。
测试已部署的智能体
测试方式有两种:用 AgentCore CLI,或者通过 boto3 以编程方式调用。
使用 AgentCore CLI 调用智能体:
agentcore invoke --prompt '{"prompt": "What are the side effects of metformin?", "model_type": "llama"}'
也可以用 boto3 以编程方式调用:
这种方式和 CLI 调用的是同一个已部署智能体,只是换用 boto3 SDK 直接发起请求。其中 agentRuntimeArn 用来标识部署好的智能体,contentType 指定请求格式,payload 则携带提示词和所选的模型。
import boto3, json
client = boto3.client('bedrock-agentcore', region_name='us-west-2')
payload = json.dumps({
"prompt": "What are the side effects of metformin?",
"model_type": "llama"
})
response = client.invoke_agent_runtime(
agentRuntimeArn='<your-agent-runtime-arn>',
contentType='application/json',
accept='application/json',
payload=payload.encode('utf-8')
)
result = response['response'].read().decode('utf-8')
print(result)
与自管理部署的关键区别
独立版和 AgentCore 运行时版部署的是同一个 agent,但方式不同。下面分别说明两条路径各自提供什么。
Amazon ECS + AWS Fargate 部署
独立版跑在 Amazon ECS 上,底层用 AWS Fargate。你需要自己定义 ECS 任务定义和服务配置、设置自动扩缩策略、为每个服务配置 IAM 角色,并通过 Amazon CloudWatch 搭建可观测性。部署流程是:构建 Docker 镜像、推送到 Amazon ECR、更新 ECS 服务。
这条路径让你完全掌控容器配置、网络和扩缩行为。Agent 代码放在 healthcare_agentcore.py,对接 Amazon Bedrock、Amazon SageMaker AI 和容器化的后端,并用 Amazon OpenSearch Service 做向量检索。
Amazon Bedrock AgentCore 运行时部署
AgentCore 运行时版跑的是同一份 healthcare_agentcore.py 代码,只是套用了 AgentCore 的装饰器写法。AgentCore 运行时负责容器编排、基于会话的扩缩、通过 IAM 集成实现的身份管理,以及内置链路追踪和日志带来的可观测性。部署只需一条命令(agentcore deploy)。
模型集成(Amazon Bedrock、Amazon SageMaker AI、容器化后端)和向量检索(Amazon OpenSearch Service)跟独立版保持一致,没有变化。
两种部署方式各有优势。Amazon ECS + AWS Fargate 让你完全掌控容器配置、网络和扩缩策略,适合已经有容器运维经验、或有特定基础设施要求的团队。Amazon Bedrock AgentCore 运行时则适合更偏好托管基础设施、想把精力主要放在 agent 逻辑开发上的团队。
无论走哪条部署路径,从独立版迁移到 AgentCore 运行时,以下部分都保持不变:
- 核心 agent 逻辑(
BedrockAgentCoreApp装饰器 + 原有代码) - Amazon Bedrock、Amazon SageMaker AI 和容器化后端之间的多模型编排
使用 Amazon OpenSearch Service 实现向量增强的知识检索。通过 Hugging Face Messages API,在不同模型后端之间保持接口兼容。
清理资源
为避免后续产生费用,当你不再需要这些资源时,请将其删除。如果你打算继续使用已部署的 agent,则无需做任何操作。
删除 AgentCore runtime agent:
先从本地配置中移除所有资源:
agentcore remove all
然后再次部署,以销毁 AWS 资源:
agentcore deploy
删除 Amazon SageMaker AI 端点:
aws sagemaker delete-endpoint --endpoint-name healthcare-agentcore-endpoint-1 --region us-west-2
删除 Amazon OpenSearch Service 域:
aws opensearch delete-domain --domain-name healthcare-vector-store --region us-west-2
总结
本文介绍了如何把一个多模型医疗 AI agent,从自管理的 Amazon ECS + AWS Fargate 架构迁移到 Amazon Bedrock AgentCore runtime。整个迁移过程无需改动 agent 的核心逻辑。
同一个 healthcare_agentcore.py 文件即可协调 Amazon Bedrock、Amazon SageMaker AI 和容器化模型服务器。它运行在 AgentCore runtime 上,只需额外加上 AgentCore 的装饰器模式(BedrockAgentCoreApp、@app.entrypoint 和 app.run())。
对医疗团队来说,这套模式会把专业的生物医学查询交给领域专用模型处理,例如部署在 Amazon SageMaker AI 上的 BioM-ELECTRA-Large-SQuAD2;把范围更广的医学推理交给基础模型,例如 Amazon Bedrock 上 Meta 的 Llama 3.1 70B Instruct。两者配合,可以覆盖多种类型的查询需求。
如果团队倾向于使用托管基础设施,AgentCore runtime 会负责容器编排、弹性伸缩、身份管理和可观测性。这样你就可以把精力放在 agent 逻辑的开发上。该设计不绑定具体框架,支持多种模型与 agent 框架的灵活组合,因此这一迁移模式也适用于医疗、金融服务、制造等多个行业。
想上手体验,可以克隆 sample-healthcare-agent-with-agentcore-on-aws GitHub 仓库,按本文的部署步骤操作。
想了解这篇博客所迁移的独立实现方案,请参阅 Agentic AI with multi-model framework using Hugging Face smolagents on AWS。如果对 Amazon Bedrock AgentCore 的入门还有疑问,可以联系 AWS 生成式 AI 专家。
延伸阅读
- Agentic AI on AWS – Build, deploy, and scale AI agents with AWS
- Make agents a reality with Amazon Bedrock AgentCore: Now generally available
- Amazon Bedrock documentation
- Build trustworthy AI agents with Amazon Bedrock AgentCore Observability
关于作者
Sanhita Sarkar
Sanhita Sarkar 拥有博士学位,在 AWS 负责全球 AI/ML 与生成式 AI 合作伙伴解决方案。她在边缘、云和数据中心环境方面积累了丰富的领导经验,持有多项专利,发表过研究论文,并担任技术会议的主席。