Bedrock Managed Agents 实战:声明式配置 Agent 告别自建编排框架

搭过 AI Agent 的都知道——模型调用只是开头,真正费劲的是编排层。

工具调用怎么路由、多步推理怎么管理状态、长时间任务怎么断点续传、异常怎么处理、可观测怎么做……这些问题加在一起,比选模型难十倍。

亚马逊云科技在 "What's Next with AWS 2026" 上发布了 Amazon Bedrock Managed Agents, powered by OpenAI(Limited Preview)。核心卖点:你只管定义 Agent 的能力和工具,编排、调度、状态管理全部由 Bedrock 托管。不用自己搭 LangChain/LangGraph/CrewAI 那套基础设施。

解决什么问题

自己搭 Agent 编排框架的痛点:

问题 自建方案 Managed Agents
编排逻辑 自己写(LangChain/自研) Bedrock 托管
状态管理 自己维护(Redis/DDB) 内置
长任务 自己实现断点续传 内置
工具调用 自己写 adapter 声明式配置
错误重试 自己写重试逻辑 内置策略
可观测 接 OpenTelemetry CloudWatch 原生
扩缩容 自己管容器/函数 全托管

说白了,Managed Agents 把 Agent 从"应用开发"变成了"配置声明"。

快速上手

创建 Managed Agent

import boto3
import json

bedrock_agent = boto3.client('bedrock-agent', region_name='us-east-1')

# 创建一个运维排障 Agent
agent = bedrock_agent.create_agent(
    agentName='ops-troubleshooter',
    description='自动诊断和修复线上问题',
    foundationModel='openai.gpt-5-5-v1:0',
    instruction='''你是一个 AWS 运维专家 Agent。
    当收到告警时,你需要:
    1. 分析告警内容,确定影响范围
    2. 查看相关服务的 CloudWatch 指标和日志
    3. 诊断根因
    4. 如果是已知问题,执行预定义的修复操作
    5. 如果是未知问题,收集诊断信息并通知值班人员
    
    原则:
    - 影响生产环境的操作需要确认
    - 所有操作必须记录审计日志
    - 超过 15 分钟未解决的问题要升级''',
    idleSessionTTLInSeconds=1800,
    agentResourceRoleArn='arn:aws:iam::123456789:role/bedrock-agent-ops-role'
)

agent_id = agent['agent']['agentId']
print(f"Agent 创建成功: {agent_id}")

配置工具(Action Groups)

# 添加 CloudWatch 查询工具
bedrock_agent.create_agent_action_group(
    agentId=agent_id,
    agentVersion='DRAFT',
    actionGroupName='cloudwatch-tools',
    actionGroupExecutor={
        'lambda': 'arn:aws:lambda:us-east-1:123456789:function:agent-cw-tools'
    },
    apiSchema={
        'payload': json.dumps({
            "openapi": "3.0.0",
            "info": {"title": "CloudWatch Tools", "version": "1.0"},
            "paths": {
                "/get-metrics": {
                    "post": {
                        "description": "获取指定服务的 CloudWatch 指标数据",
                        "parameters": [
                            {"name": "namespace", "in": "query", "required": True,
                             "schema": {"type": "string"}, "description": "CloudWatch 命名空间,如 AWS/Lambda"},
                            {"name": "metric_name", "in": "query", "required": True,
                             "schema": {"type": "string"}, "description": "指标名称"},
                            {"name": "period_minutes", "in": "query",
                             "schema": {"type": "integer", "default": 60}}
                        ]
                    }
                },
                "/query-logs": {
                    "post": {
                        "description": "查询 CloudWatch Logs Insights",
                        "parameters": [
                            {"name": "log_group", "in": "query", "required": True,
                             "schema": {"type": "string"}},
                            {"name": "query", "in": "query", "required": True,
                             "schema": {"type": "string"}, "description": "Logs Insights 查询语句"},
                            {"name": "time_range_minutes", "in": "query",
                             "schema": {"type": "integer", "default": 30}}
                        ]
                    }
                },
                "/restart-service": {
                    "post": {
                        "description": "重启指定的 ECS 服务",
                        "parameters": [
                            {"name": "cluster", "in": "query", "required": True,
                             "schema": {"type": "string"}},
                            {"name": "service", "in": "query", "required": True,
                             "schema": {"type": "string"}},
                            {"name": "confirm", "in": "query", "required": True,
                             "schema": {"type": "boolean"}, "description": "必须为 true 才执行"}
                        ]
                    }
                }
            }
        })
    }
)

添加知识库

# 关联运维知识库(Runbook、历史故障分析等)
bedrock_agent.associate_agent_knowledge_base(
    agentId=agent_id,
    agentVersion='DRAFT',
    knowledgeBaseId='kb-runbook-ops-2026',
    description='运维手册和历史故障分析文档',
    knowledgeBaseState='ENABLED'
)

调用 Agent

bedrock_agent_runtime = boto3.client('bedrock-agent-runtime', region_name='us-east-1')

# 模拟收到告警后调用 Agent
response = bedrock_agent_runtime.invoke_agent(
    agentId=agent_id,
    agentAliasId='prod-alias',
    sessionId='incident-2026-05-26-001',
    inputText='''
    收到 PagerDuty 告警:
    - 服务: payment-service
    - 告警: 错误率超过 10%(当前 23%)
    - 开始时间: 2026-05-26 19:45 UTC
    - 影响: 支付接口 30% 请求失败
    
    请立即诊断并给出修复建议。
    '''
)

# Agent 会自动:
# 1. 调用 get-metrics 查看 payment-service 的详细指标
# 2. 调用 query-logs 分析错误日志
# 3. 在知识库中搜索类似故障的处理方案
# 4. 给出诊断结果和修复建议
# 5. 如果是已知问题(如下游超时),可直接执行修复

for event in response['completion']:
    if 'chunk' in event:
        print(event['chunk']['bytes'].decode(), end='')

长时间任务

Managed Agents 支持长时间运行的任务,不会因为 Lambda 超时或 API Gateway 30 秒限制而中断:

# 启动一个长时间任务
task = bedrock_agent_runtime.invoke_agent(
    agentId=agent_id,
    agentAliasId='prod-alias',
    sessionId='migration-task-001',
    inputText='''
    执行数据库迁移任务:
    1. 对 orders 表做 schema 变更(加 3 列)
    2. 回填历史数据(约 500 万行)
    3. 验证数据一致性
    4. 切换读流量到新表
    每一步完成后报告进度。
    ''',
    enableTrace=True,
    sessionState={
        'invocationTimeout': 3600  # 最长 1 小时
    }
)

Agent 会在后台持续执行,你可以随时查看进度:

# 查看任务进度
trace = bedrock_agent_runtime.get_agent_memory(
    agentId=agent_id,
    agentAliasId='prod-alias',
    memoryId='migration-task-001',
    memoryType='SESSION_SUMMARY'
)

可观测性

所有 Agent 行为自动上报 CloudWatch:

# Agent 自动生成的 CloudWatch 指标:
# - bedrock/agent/InvocationCount
# - bedrock/agent/ToolCallCount
# - bedrock/agent/Latency (P50/P90/P99)
# - bedrock/agent/ErrorRate
# - bedrock/agent/TokensUsed (input/output)
# - bedrock/agent/SessionDuration

# 设置告警
cloudwatch = boto3.client('cloudwatch')
cloudwatch.put_metric_alarm(
    AlarmName='agent-error-rate-high',
    Namespace='AWS/Bedrock',
    MetricName='AgentErrorRate',
    Dimensions=[{'Name': 'AgentId', 'Value': agent_id}],
    Statistic='Average',
    Period=300,
    EvaluationPeriods=2,
    Threshold=5.0,
    ComparisonOperator='GreaterThanThreshold',
    AlarmActions=['arn:aws:sns:us-east-1:123456789:ops-alerts']
)

和自建方案的成本对比

假设一个中等复杂度的 Agent,日调用 1000 次:

项目 自建(ECS + Redis + 自研编排) Managed Agents
计算 ~$150/月(ECS Fargate) $0(按调用计费)
存储 ~$30/月(Redis/DDB) 包含在服务费中
开发维护 2 人/月(编排框架维护) 0
模型调用 Bedrock 按 token 计
总计 ~$180/月 + 人力 按调用量计费

规模小的时候 Managed Agents 成本优势明显;规模大了之后看具体定价(Preview 阶段定价未定)。

我的判断

Managed Agents 的价值在于降低 Agent 的工程门槛。

之前搭一个生产级 Agent 需要:选框架(LangChain/LlamaIndex/自研)、搭编排(状态机/DAG)、做持久化(会话/记忆)、加可观测(Trace/Metrics)、处理并发和扩缩容。这一堆事情加起来,至少一个高级工程师干 2-3 周。

Managed Agents 把这些全托管了,你只需要定义"Agent 能做什么"(工具+指令),不用管"Agent 怎么运转"。对于 80% 的 Agent 场景来说,这就够了。

当然,超复杂的多 Agent 协作、自定义编排逻辑这些高级场景,可能还是需要自建。但大多数企业场景——客服 Agent、运维 Agent、数据分析 Agent——Managed 方案完全够用。


相关链接:

posted @ 2026-05-27 20:30  亚马逊云开发者  阅读(2)  评论(0)    收藏  举报