5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活

5 分钟用 Amazon Bedrock 搭一个 AI Agent:从零到能干活

最近打开掘金,热榜一半都是 AI Agent 相关的内容------OpenClaw 拆解、MCP 协议、Function Call 实战... 概念已经讲了不少,但真正从零搭过一个完整 Agent 的人可能不多。

今天换个思路:不装环境、不写框架、不管运维,直接用 Amazon Bedrock 的 Agent 功能,5 分钟搭一个能理解用户意图、自动调 API 的 Agent。

本文所有步骤均已实际验证跑通,不是对着文档猜的。

前置条件

  • 一个 AWS 账号(注册入口,新用户有免费额度)
  • 就这一个。不需要 GPU、不需要装 Python、不需要 Docker。

第 1 步:开通模型访问权限(1 分钟)

  1. 登录 Amazon Bedrock 控制台
  2. 左侧菜单 Model access(模型访问)Manage model access
  3. 勾选你要用的模型,推荐:
    • Claude Sonnet 4.6(综合能力强,支持中文)
    • DeepSeek V3.2(性价比高)
  4. Save changes,几秒钟就开通

💡 Bedrock 目前支持 100+ 基础模型,覆盖 Anthropic Claude 全系列、DeepSeek、Meta Llama 4、Qwen3、GLM 等主流模型。注意 :部分模型需要使用 Inference Profile(跨区域推理配置)才能调用,控制台会自动处理这个,API 调用时需要用 us.anthropic.claude-sonnet-4-6 这样的 Profile ID 而非裸模型 ID。

第 2 步:创建 Agent(2 分钟)

  1. 左侧菜单 AgentsCreate Agent
  2. 填写基本信息:
    • Agent nameorder-assistant(订单助手)
    • Description帮用户查询和管理订单
  3. Foundation model:选刚才开通的模型(如 Claude Sonnet 4.6)
  4. Instructions(系统提示词)------这是 Agent 的"灵魂":
markdown 复制代码
你是一个订单管理助手。你可以帮用户完成以下操作:
1. 查询订单状态(需要订单号)
2. 查询最近的订单列表(需要用户ID)
3. 取消订单(需要订单号和取消原因)

请用中文和用户交流。如果用户没有提供必要信息,请主动询问。
  1. Agent resource role :选 Create and use a new service role(控制台自动创建,省心)
  2. Create

⚠️ 如果通过 API/CLI 创建 Agent,需要手动创建 IAM Service Role 并绑定。Trust Policy 要允许 bedrock.amazonaws.comsts:AssumeRole,并附加 bedrock:InvokeModel 权限。控制台操作会自动搞定这些,所以推荐新手用控制台。

第 3 步:给 Agent 装上"手脚"------Action Group(1 分钟)

光有模型和提示词,Agent 只能聊天,不能干活。Action Group 就是告诉 Agent "你能做什么操作"。

  1. 在 Agent 详情页,点 Add Action Group
  2. Action group nameOrderActions
  3. 定义方式选 Define with function details(比 OpenAPI Schema 简单得多)
  4. 添加函数:

函数 1:GetOrderStatus

  • 描述:查询订单状态
  • 参数:order_id(string,必填,描述:订单编号)

函数 2:CancelOrder

  • 描述:取消订单
  • 参数:order_id(string,必填)、reason(string,必填,描述:取消原因)
  1. Action group executorReturn Control

💡 Return Control 是什么意思?Agent 收集完参数后,不直接执行操作,而是把参数返回给你的应用程序。你的应用拿到参数后去调自己的后端 API,再把结果返回给 Agent 继续对话。这种模式不需要写 Lambda,对已有后端服务的场景特别友好。

  1. Save → 回到 Agent 页面,点顶部 Prepare

第 4 步:测试(30 秒)

Agent 状态变成 Prepared 后(通常几秒),右侧出现 Test 对话窗口。

测试 1:完整信息

输入:我想查一下订单 ORD-20260310-001 的状态

Agent 的推理过程(Trace):

ini 复制代码
[思考] 用户想查询订单状态,我有所需的全部信息可以调用函数。
[调用] GetOrderStatus → ActionGroup: OrderActions
  参数: order_id = ORD-20260310-001
[类型] ACTION_GROUP(Return Control,等待应用返回结果)

✅ Agent 准确识别了意图,提取了订单号,调用了正确的函数。

测试 2:不完整信息

输入:我想取消一个订单

Agent 回复:

markdown 复制代码
好的,我来帮您取消订单!为了完成取消操作,我需要了解以下信息:
1. 订单编号是什么?
2. 取消原因是什么?
请提供这两项信息,我将立即为您处理。

✅ Agent 发现缺少必要参数,自动用中文追问,而不是直接报错。

Trace 是调试利器------每一步推理都可视化,不用猜模型在想什么。

第 5 步(可选):Knowledge Base 让 Agent 更聪明

如果你希望 Agent 不仅能调 API,还能回答"退货政策是什么"这类基于文档的问题:

  1. 左侧 Knowledge basesCreate
  2. 上传文档(PDF、TXT、HTML、Markdown 都支持)
  3. Bedrock 自动完成:文档切分 → 向量嵌入 → 存储到向量数据库
  4. 回到 Agent → Add Knowledge Base → 选刚才创建的
  5. 重新 Prepare

💡 向量数据库可以让 Bedrock 自动创建(Amazon OpenSearch Serverless),零配置。也支持自建的 Pinecone、Redis 等。

部署到应用:一个 API 调用

python 复制代码
import boto3

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

response = client.invoke_agent(
    agentId='你的AgentID',        # 创建时获得
    agentAliasId='你的AliasID',   # 创建Alias时获得,测试用 TSTALIASID
    sessionId='user-session-123',  # 用户会话ID,用于多轮对话
    inputText='帮我查一下订单 ORD-20260310-001 的状态'
)

# 处理流式响应
for event in response['completion']:
    if 'chunk' in event:
        print(event['chunk']['bytes'].decode('utf-8'))

Java、JavaScript、Go SDK 写法类似,参考 InvokeAgent API 文档

踩坑记录

实际跑通过程中遇到的几个坑,分享出来:

  1. 模型 ID vs Inference Profile ID :直接用 anthropic.claude-sonnet-4-6 调用会报 validationException,需要用 Inference Profile ID(如 us.anthropic.claude-sonnet-4-6)。控制台创建不受影响,API/CLI 创建需注意。

  2. Agent 必须有 Service Role :即使是最简单的 Agent,Prepare 时如果没有绑定 agentResourceRoleArn 会报错。控制台选"Create new role"即可,CLI 需要手动创建 IAM Role。

  3. Prepare 是必须步骤:每次修改 Agent 配置(Instructions、Action Group、模型等)后,必须重新 Prepare 才生效。

自建 vs 托管,怎么选?

维度 自建(LangChain / AutoGen 等) Bedrock Agents
环境 需要 Python 环境 + 依赖管理 不需要
模型 自己管 GPU 或调第三方 API 100+ 模型一键切换
工具编排 自己写编排逻辑 平台自动编排
RAG 搭向量数据库 + 检索链路 上传文档即可
调试 print / log Trace 可视化
扩缩容 自己管 全托管,按需付费
灵活性 ⭐⭐⭐⭐⭐ ⭐⭐⭐
上手速度 ⭐⭐ ⭐⭐⭐⭐⭐

不是说自建不好------如果你需要深度定制编排逻辑、用特殊的工具链,自建框架更灵活。但如果目标是"快速让 Agent 能干活并上线",托管方案能帮你省掉大量基础设施层的工作。

两者也不冲突,完全可以用 Bedrock 做快速原型验证,确认可行后再决定是否迁移到自建方案。

相关资源

有问题欢迎评论区交流,也欢迎分享你用 Agent 做的项目 👋

相关推荐
小兵张健2 小时前
白嫖党的至暗时期
人工智能·chatgpt·aigc
肥肥旭手记4 小时前
opencalw平替之nanobot 源码解析(一):环境搭建、Debug 配置与 onboard 命令详解
agent
IT_陈寒4 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
阿里云大数据AI技术4 小时前
告别先开发后治理:Agent 驱动的数据质量一体化交付
agent
小徐_23335 小时前
向日葵 x AI:把远程控制封装成 MCP,让 AI 替我远程控制设备
前端·人工智能
桦说编程6 小时前
Harness Engineering — AI 时代的工程最佳实践
人工智能·架构·代码规范
老纪的技术唠嗑局6 小时前
Agent / Skills / Teams 架构演进流程及技术选型之道
人工智能·agent
该用户已不存在6 小时前
除了OpenClaw还有谁?五款安全且高效的开源AI智能体
人工智能·aigc·ai编程