如果你的 Agent 要真正调用公司后端 API、查内部文档、还能被成千上万用户稳定调用,自己从零写一个编排引擎成本很高。Amazon Bedrock Agents 是 AWS 的全托管 Agent 服务:你不用管调度、会话、重试,只要告诉它「用哪个大模型、能调哪些工具(Action Group)、能查哪个知识库(Knowledge Base)」,它就会自主规划、分步执行。本教程带你从零跑通一个生产级 Agent。
先搞懂:Bedrock Agents 的三大积木
用一句话理解:Bedrock Agents = 大模型大脑 + 你暴露的工具 + 你接入的知识,AWS 帮你把「规划—调用—汇总」的循环托管起来。
| 积木 | 作用 | 你提供什么 |
|---|---|---|
| Foundation Model | Agent 的推理大脑 | 选 Claude / Nova / Llama 等模型 |
| Action Group | Agent 可调用的工具 | OpenAPI schema + Lambda 函数 |
| Knowledge Base | Agent 检索的内部文档(RAG) | 向量库 + 文档源(S3 等) |
| Guardrails | 安全护栏(拒答/脱敏/话题限制) | 配置策略并关联 Agent |
新手先做一个 Action Group:最小可用 Agent = 1 个模型 + 1 个 Action Group(一个查订单的 Lambda)。知识库和 Guardrails 是锦上添花,等跑通再加。
Step 1:准备 AWS 环境与 IAM 权限
Bedrock Agents 涉及调用模型、Lambda、知识库,先确保权限齐全。
# 1. 安装并配置 AWS CLI(已有可跳过)
aws configure # 填入 Access Key / Secret / region
# 2. 确认 Bedrock 模型访问已开通
# 控制台 → Bedrock → Model access → 勾选你要用的模型(如 Claude)
# 3. 准备一个 IAM 角色给 Agent 用,至少包含:
# · bedrock:InvokeModel
# · lambda:InvokeFunction
# · 访问 Knowledge Base 的权限
# 在 IAM 控制台创建角色,信任实体选 bedrock.amazonaws.com
Step 2:创建 Agent 并选择模型
可以用控制台点,也可以用 AWS CLI / SDK。新手建议先用控制台点一遍理解结构。
1. 控制台 → Bedrock → Agents → Create agent
2. 填名称:如 order-assistant
3. 选基础模型:Anthropic Claude 3.5 Sonnet(推理强、工具调用稳)
4. 填一句 Instructions(总指令):
「你是一个订单助手,帮用户查订单状态、
解释退货政策。只调用提供的工具,不确定时问清楚。」
5. 关联 Step 1 建好的 IAM 角色
6. 点创建,进入 Agent 详情页
Step 3:定义 Action Group(OpenAPI + Lambda)
Action Group 的核心是两份东西:一个 OpenAPI schema(告诉 Agent 有哪些接口) + 一个 Lambda(真正执行)。
# openapi.json(节选)
{
"openapi": "3.0.0",
"paths": {
"/orders/{orderId}": {
"get": {
"summary": "查询订单状态",
"parameters": [{ "name": "orderId", "in": "path", "required": true }],
"responses": { "200": { "description": "订单详情" } }
}
}
}
}
# Lambda(Python 伪代码)
def lambda_handler(event, context):
order_id = event["parameters"][0]["value"]
# 调你的订单系统 API
return {"status": "shipped", "eta": "2026-08-02"}
Lambda 返回要干净:Agent 把 Lambda 的输出再喂回模型。返回里别塞大段原始 JSON 或错误堆栈,否则 token 暴涨、还容易让模型困惑。只回结构化关键字段。
Step 4:关联 Knowledge Base 做 RAG
光有工具还不够,很多问题是「政策类」的,得查文档。Bedrock Knowledge Base 帮你把 S3 里的文档向量化。
1. Bedrock → Knowledge bases → Create
2. 数据源选 S3(放《退货政策.pdf》《FAQ.docx》)
3. 向量库选 Aurora / OpenSearch(或用托管默认)
4. 同步数据,等索引完成
5. 回到 Agent 详情 → 关联这个 Knowledge Base
→ Agent 会自动在回答前先做检索增强
Step 5:用 Guardrails 加安全护栏
面向真实用户时,Guardrails 是必选项:限制话题、脱敏、拒答违规内容。
1. Bedrock → Guardrails → Create
2. 配置:
· 被禁话题:如「透露其他用户订单」
· 敏感信息过滤:自动遮掩手机号/邮箱/身份证
· 内容过滤:仇恨/暴力/违规
3. 保存后在 Agent 详情里「关联 Guardrails」
4. 测试:故意问越权问题,确认被拦截
别省这一步:企业 Agent 一旦把 A 客户的订单透给 B 客户,就是事故。Guardrails + 严格的 IAM 是最低防线。
Step 6:测试与查看 Trace
Bedrock 的 Trace 功能能完整回放 Agent 的规划与工具调用,是调试神器。
1. Agent 详情 → Test 窗口
2. 输入:「帮我查订单 A123 到哪了,能退货吗?」
3. 打开 Trace,你会看到:
· 模型先决定调 getOrder(A123)
· Lambda 返回 shipped
· 模型再检索 Knowledge Base 的退货政策
· 最后汇总成自然语言回答
4. 哪一步不对,就改对应 Action Group / 指令 / 知识库
Step 7:用 SDK 集成到你的应用
建好、测好之后,通过 InvokeAgent API 把它嵌进你的系统。
# Python (boto3)
import boto3
client = boto3.client('bedrock-agent-runtime')
resp = client.invoke_agent(
agentId='YOUR_AGENT_ID',
agentAliasId='YOUR_ALIAS_ID',
sessionId='user-123', # 同一 session 保持上下文
inputText='查一下 A123 的物流'
)
# 流式读取 resp['completion'] 拿到回答
# 上线前先建 Alias(版本别名),避免改了草稿影响线上
常见问题速查
| 现象 | 大概率原因 & 解决 |
|---|---|
| 控制台找不到 Agents 入口 | 区域不支持,换 us-east-1 等支持区域 |
| Agent 不调我的工具 | OpenAPI schema 描述不清,或 Lambda 权限没给 Agent 角色 |
| 回答不引用知识库 | Knowledge Base 未同步完成,或未在 Agent 里关联 |
| InvokeAgent 报错 AccessDenied | IAM 角色缺 bedrock-agent-runtime 权限或 Alias 不存在 |