加载中

向 AWS Bedrock 发起您的第一个 API 请求需要三个基本组件:用于连接服务的 Bedrock Runtime 客户端、用于指定您想要运行的模型的模型 ID,以及包含您想要输入模型的文本的用户消息。

设置 Bedrock 客户端

首先使用 boto3 创建一个客户端,以连接到 Bedrock 运行时服务:

python
import boto3

client = boto3.client("bedrock-runtime", region_name="us-west-2")

了解模型 ID 和区域可用性

这里是容易出问题的地方。并非每个模型在每个 AWS 区域都可用。如果您尝试运行一个在您所选区域中不存在的模型,您会收到一条令人费解的错误消息,提示该模型不存在。

例如,如果 Claude Sonnet 在 us-west-2 可用,但您是从 us-east-1 发起请求,您的请求将会失败。

使用推理配置文件

推理配置文件(Inference profiles)通过自动将您的请求路由到实际托管您所选模型的区域,解决了区域可用性问题。

您无需追踪哪些模型位于哪些区域,而是可以使用一个推理配置文件,它知道该模型在多个区域(如 us-west-2 和 us-east-2)中都可用。

当您使用推理配置文件发起请求时,即使您是从不同的区域连接,AWS 也会自动将其路由到您的模型所在的正确区域。

要查找推理配置文件 ID,请前往 AWS Bedrock 控制台,在"跨区域推理(Cross-region inference)"下查找,而不是使用主模型目录页面中的模型 ID。

复制您所选模型的推理配置文件 ID。本课程中的示例使用 Claude Haiku 4.5,其推理配置文件 ID 为 us.anthropic.claude-haiku-4-5-20251001-v1:0。

创建用户消息

用户消息有一种特定的结构,乍一看可能显得过于复杂,但这样设计是有充分理由的:

python
user_message = {
    "role": "user",
    "content": [
        {"text": "What's 1+1?"}
    ]
}

内容之所以是一个列表,是因为单条消息可以包含不同类型的内容——文本、图像或其他媒体类型。这种结构使您能够发送多模态请求。

发起请求

现在您可以使用 converse 方法发起 API 调用:

python
response = client.converse(
    modelId=model_id,
    messages=[user_message]
)

响应中包含大量元数据,但要仅获取生成的文本,您需要在响应结构中进行导航:

python
response["output"]["message"]["content"][0]["text"]

了解消息类型

您将使用两种主要的消息类型:

  • 用户消息 - 您想要输入模型的内容(role: "user")
  • 助手消息 - 模型生成的内容(role: "assistant")

这两种消息类型都遵循相同的结构,包含一个 role 和一个 content 列表。这种一致性使得通过在用户消息和助手消息之间交替来构建对话变得容易。

您从 Bedrock 获得的助手消息与您的用户消息遵循完全相同的格式,只是 role 不同。这种标准化的结构使得将多个请求串联起来以进行更长的对话变得简单直接。