載入中

向 AWS Bedrock 發出您的第一個 API 請求需要三個基本組件:用於連接服務的 Bedrock Runtime Client、用於指定您想要執行的模型的 Model ID,以及包含您想要輸入模型的文字的 User Message。

設定 Bedrock 客戶端

首先使用 boto3 建立一個客戶端以連接到 Bedrock runtime 服務:

python
import boto3

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

了解 Model 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」下查找,而不是使用主模型目錄頁面中的 Model ID。

複製您所選模型的推論設定檔 ID。本課程中的範例使用 Claude Haiku 4.5,其推論設定檔 ID 為 us.anthropic.claude-haiku-4-5-20251001-v1:0。

建立 User Message

User Message 有一個特定的結構,乍看之下可能顯得過於複雜,但這是有充分理由的:

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

content 是一個列表,因為單一訊息可以包含不同類型的內容——文字、圖片或其他媒體類型。這種結構讓您能夠發送多模態請求。

發出請求

現在您可以使用 converse 方法發出您的 API 呼叫:

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

回應中包含大量的中繼資料,但若要僅取得生成的文字,您需要在回應結構中進行導覽:

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

了解訊息類型

您將會使用到兩種主要的訊息類型:

  • User messages(使用者訊息) - 您想要輸入模型的內容(role: "user")
  • Assistant messages(助理訊息) - 模型所產生的內容(role: "assistant")

這兩種訊息類型都遵循相同的結構,包含一個 role 和一個 content 列表。這種一致性使得透過在使用者訊息與助理訊息之間交替來建構對話變得容易。

您從 Bedrock 取回的助理訊息,其格式與您的使用者訊息完全相同,只是 role 不同。這種標準化的結構使得將多個請求串連在一起以進行更長的對話變得簡單直接。