在前面的文章中,我们了解了 Bedrock 是什么、能做什么。但纸上得来终觉浅——真正掌握一个服务,最好的方式就是动手实践。

今天这篇文章,就带你从零开始,用代码调用 Bedrock 的 API,并一步步构建一个真正的智能应用。无论你是想给自己的网站加上 AI 功能,还是想开发一个智能助手,这篇教程都会是很好的起点。

准备工作:让账号「做好接收大模型的准备」

在开始写代码之前,有几个前置步骤需要先完成。整个过程大约 10-15 分钟 。

第一步:登录 AWS 控制台并进入 Bedrock

登录 AWS 管理控制台,在搜索框中输入 "Bedrock",点击进入 Amazon Bedrock 服务页面 。

第二步:申请模型访问权限

这是新手最常卡住的一步。在 Bedrock 控制台的左侧导航栏中,点击 "Model access"(模型访问)

你会看到各大模型供应商的列表——Anthropic(Claude 系列)、Meta(Llama)、Amazon(Nova 系列)等。找到你想使用的模型(建议新手从 Claude 3.5 Sonnet 或 Amazon Nova Lite 开始),点击 "Edit access",勾选对应模型后提交申请 。

💡 大多数模型申请后几分钟内就会批准。如果显示"待审核",可以稍等片刻刷新页面 。

第三步:配置 IAM 权限

要让代码能调用 Bedrock,需要给当前使用的身份(IAM 用户或角色)授予 Bedrock 的调用权限。最直接的方式是添加一个内联策略:

json

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "BedrockFullAccess",
            "Effect": "Allow",
            "Action": ["bedrock:*"],
            "Resource": "*"
        }
    ]
}

⚠️ 安全提示bedrock:* 权限适合学习和测试阶段。生产环境中,建议按最小权限原则限制到具体模型和操作 。

核心 API 调用:用 10 行代码让大模型「开口说话」

准备工作就绪后,让我们开始写代码。

安装 AWS SDK

首先确保安装了 boto3(AWS 的 Python SDK):

bash

pip install boto3

最简调用示例

下面这段代码就是调用 Bedrock 的"最小原型"——发送一句提示词,拿到模型的回复 :

python

import json
import boto3

# 1. 创建 Bedrock 客户端
bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")

# 2. 定义模型 ID(这里用 Claude 3.5 Sonnet 为例)
model_id = "us.anthropic.claude-3-5-sonnet-20241022-v2:0"

# 3. 构建请求体
prompt = "用一句话解释什么是人工智能"
body = {
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 512,
    "messages": [
        {"role": "user", "content": prompt}
    ],
}

# 4. 调用 API
response = bedrock.invoke_model(
    modelId=model_id,
    contentType="application/json",
    accept="application/json",
    body=json.dumps(body)
)

# 5. 解析返回结果
result = json.loads(response["body"].read())
answer = result["content"][0]["text"]

print(f"Q: {prompt}")
print(f"A: {answer}")

运行这段代码,你会看到类似这样的输出 :

text

Q: 用一句话解释什么是人工智能
A: 人工智能是开发能够执行通常需要人类智能的任务的计算机系统,如学习、推理、问题解决和理解语言。

关键参数解读

参数含义说明modelId模型 ID决定了用哪个模型。可以在控制台的"基础模型"页面找到 max_tokens最大输出长度控制回复的字数上限messages对话消息支持多轮对话,按顺序放入即可

进阶实践:让 AI「有工具可用」——构建智能应用

上面的示例只是"对话",但如果想让 AI 真正帮你做事,还需要给它工具——比如查天气、搜文档、调用外部 API。

需求场景

假设我们要构建一个智能助手,它能:

  1. 回答用户的问题

  2. 在需要时调用外部数据(比如实时价格、天气信息)

核心思路:让模型学会「使用工具」

AI 本身不联网,不知道实时数据 。解决方案是:定义一组工具(函数),让 AI 在需要时调用它们 。

以下是一个简化版的实现思路,使用 Bedrock 的 Converse API 配合工具调用 :

python

import json
import boto3
from datetime import datetime

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

# 1. 定义工具(告诉模型"你能用这些工具")
tools = [
    {
        "toolSpec": {
            "name": "get_current_time",
            "description": "获取当前日期和时间",
            "inputSchema": {
                "json": {
                    "type": "object",
                    "properties": {},
                    "required": []
                }
            }
        }
    },
    {
        "toolSpec": {
            "name": "get_weather",
            "description": "获取某城市的天气",
            "inputSchema": {
                "json": {
                    "type": "object",
                    "properties": {
                        "city": {"type": "string", "description": "城市名称"}
                    },
                    "required": ["city"]
                }
            }
        }
    }
]

# 2. 发送用户消息 + 工具定义
response = bedrock.converse(
    modelId="us.anthropic.claude-3-5-sonnet-20241022-v2:0",
    messages=[
        {"role": "user", "content": [{"text": "现在几点了?北京天气怎么样?"}]}
    ],
    tools=tools
)

# 3. 检查模型是否想用工具
output = response["output"]["message"]
for content in output["content"]:
    if "toolUse" in content:
        tool = content["toolUse"]
        print(f"模型想调用工具: {tool['name']}")
        print(f"参数: {tool['input']}")
        # 实际执行工具调用...
        # 然后把结果返回给模型,让它生成最终回复

五种集成模式速览

根据项目复杂度,Bedrock 应用可以从简单到复杂分为五个层次 :

模式适用场景复杂度Converse API简单问答、内容生成、原型验证⭐ 最低Inline Agents自定义工具调用、灵活控制⭐⭐ 中低Bedrock Agents基础架构化管理、CI/CD 集成⭐⭐⭐ 中高Lambda + LangGraph复杂工作流、精细可观测性⭐⭐⭐ 高AgentCore + LangGraph生产级 Agent 部署、完整指标⭐⭐⭐⭐ 最高

新手建议:从 Converse API 开始,熟悉后逐步升级到 Inline Agents 模式 。

实战案例参考

如果你需要更完整的项目参考,这里有三个开源示例可供学习:

  1. 智能客服聊天机器人:使用 Bedrock Agents 与实时数据集成,展示如何让 AI 访问外部 API

  2. 多模态 WhatsApp 助手:支持图片、视频、文档分析,使用 Amazon Nova 模型和 Bedrock Agents 维持对话上下文

  3. 语音 AI 酒店服务系统:使用 Amazon Nova 2 Sonic 处理语音交互,适用于需要语音输入输出的场景


Bedrock 让大模型 API 的调用变得非常简单——本质上就是 "发一段文字,收一段文字" 。从最基础的 invoke_model 调用,到带工具函数的智能 Agent,Bedrock 提供了完整的进阶路径。掌握这些实践方法,你就拥有了在 AWS 上构建生成式 AI 应用的核心能力。