本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
調用匯入的模型
在您傳送 CreateModelImportJob 請求之後,模型匯入任務可能需要幾分鐘的時間才能匯入您的模型。您可以在主控台或呼叫 GetModelImportJob 操作並檢查回應中的 Status 欄位,以檢查匯入任務的狀態。如果模型的狀態為完成,匯入任務即完成。
在 Amazon Bedrock 中提供匯入的模型之後,您可以透過傳送 InvokeModel 或 InvokeModelWithResponseStream 請求,對模型進行推論呼叫,以隨需輸送量使用模型。如需詳細資訊,請參閱使用 InvokeModel 提交單一提示。
若要使用訊息格式與匯入的模型連接,您可以呼叫 Converse 或 ConverseStream 操作。如需詳細資訊,請參閱使用 Converse API。
Qwen2.5、Qwen2-VL, Qwen2.5-VL 和 GPT-OSS模型不支援 Converse API。
增強型 API 支援:多個 API 格式
自 2025 年 11 月 17 日起,Amazon Bedrock Custom Model Import 支援全面的 OpenAI 相容 API 格式,可讓您靈活地整合和部署自訂模型。2025 年 11 月 11 日之後匯入的所有模型都會自動受益於這些增強功能,而不需要額外的組態。
自訂模型匯入現在支援三種 API 格式:
BedrockCompletion (文字) - 與目前的 Bedrock 工作流程相容
OpenAICompletion (文字) - OpenAI 完成結構描述相容性
OpenAIChatCompletion (文字和影像) - 完整的對話式結構描述相容性
這些增強功能包括強制執行 JSON 結構描述和模式的結構化輸出、具有多影像處理的增強視覺支援、模型可信度洞察的日誌機率,以及GPT-OSS模型的工具呼叫功能。
如需詳細的 API 參考文件,請參閱官方 OpenAI 文件:
下列範例示範如何在匯入的模型中使用四種支援的 API 格式。
- BedrockCompletion
-
BedrockCompletion 格式與目前的 Bedrock 工作流程相容,並支援文字型推論請求。
範例請求:
import json
import boto3
client = boto3.client('bedrock-runtime', region_name='us-east-1')
payload = {
"prompt": "How is the rainbow formed?",
"max_gen_len": 100,
"temperature": 0.5
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
回應範例:
{
"generation": " – A scientific explanation\nA rainbow is a beautiful natural phenomenon that occurs when sunlight passes through water droplets in the air. It is formed through a process called refraction, which is the bending of light as it passes from one medium to another.\nHere's a step-by-step explanation of how a rainbow is formed:\n1. Sunlight enters the Earth's atmosphere: The first step in forming a rainbow is for sunlight to enter the Earth's atmosphere. This sunlight is made up of a spectrum of",
"prompt_token_count": 7,
"generation_token_count": 100,
"stop_reason": "length",
"logprobs": null
}
BedrockCompletion 支援使用 response_format 參數搭配 json_object和 json_schema類型進行結構化輸出。
- OpenAICompletion
-
OpenAICompletion 格式提供 OpenAI 完成結構描述相容性。若要使用此格式,請包含 max_tokens 參數,而非 max_gen_len。
範例請求:
import json
import boto3
client = boto3.client('bedrock-runtime', region_name='us-east-1')
payload = {
"prompt": "How is the rainbow formed?",
"max_tokens": 100,
"temperature": 0.5
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
回應範例:
{
"id": "cmpl-b09d5810bd64428f8a853be71c31f912",
"object": "text_completion",
"created": 1763166682,
"choices": [
{
"index": 0,
"text": " The formation of a rainbow is a complex process that involves the interaction of sunlight with water droplets in the air. Here's a simplified explanation: 1. Sunlight enters the Earth's atmosphere and is refracted, or bent, as it passes through the air. 2. When sunlight encounters a water droplet, such as a cloud, mist, or fog, it is refracted again and split into its individual colors, a process known as dispersion. 3. The refracted and",
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 7,
"total_tokens": 107,
"completion_tokens": 100
}
}
OpenAICompletion 支援使用 structured_outputs 參數的完整結構化輸出功能json,包括 choice、、 regex和 grammar限制條件。
- OpenAIChatCompletion
-
OpenAIChatCompletion 格式提供完整的對話式結構描述相容性,並支援文字和影像輸入。
範例請求:
import json
import boto3
client = boto3.client('bedrock-runtime', region_name='us-east-1')
payload = {
"messages": [
{
"role": "user",
"content": "How is the rainbow formed?"
}
],
"max_tokens": 100,
"temperature": 0.5
}
response = client.invoke_model(
modelId='your-model-arn',
body=json.dumps(payload),
accept='application/json',
contentType='application/json'
)
response_body = json.loads(response['body'].read())
回應範例:
{
"id": "chatcmpl-1d84ce1d3d61418e8c6d1973f87173db",
"object": "chat.completion",
"created": 1763166683,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A rainbow is a beautiful natural phenomenon that occurs when sunlight passes through water droplets in the air. The process of forming a rainbow involves several steps:\n\n1. **Sunlight**: The first requirement for a rainbow is sunlight. The sun should be shining brightly, but not directly overhead.\n2. **Water droplets**: The second requirement is water droplets in the air..."
},
"finish_reason": "length"
}
],
"usage": {
"prompt_tokens": 41,
"completion_tokens": 100,
"total_tokens": 141
}
}
OpenAIChatCompletion 支援使用 response_format和 structured_outputs 參數的結構化輸出。對於視覺功能,請在包含 base64 編碼影像資料的內容陣列中包含影像。
若要使用 ChatCompletion 格式,聊天範本必須是 的一部分tokenizer_config.json。自訂模型匯入不會將任何預設聊天範本套用至請求。
您需要模型 ARN,才能對新匯入的模型進行推論呼叫。成功完成匯入任務並啟用匯入的模型後,您可以在主控台中或透過傳送 ListImportedModels 請求來取得匯入模型的模型 ARN。
當您使用 InvokeModel 或 InvokeModelWithStream 調用匯入的模型時,您的請求會在 5 分鐘內提供,否則您可能會收到 ModelNotReadyException。若要了解 ModelNotReadyException,請依照下一節中的步驟處理 ModelNotreadyException。
問:我應該使用哪種 API 格式?
答:為了與各種 SDKs 的最大相容性,我們建議您使用 OpenAICompletion 或 OpenAIChatCompletion 格式,因為它們提供不同工具和程式庫廣泛支援的 OpenAI 相容結構描述。
問:在 Amazon Bedrock GPT-OSS上,自訂模型匯入是否支援 Converse API?
答:編號GPT-OSS型自訂模型匯入模型不支援 Converse API 或 ConverseStream API。使用 GPT-OSS型自訂模型時,您必須使用 InvokeModel API 搭配 OpenAI 相容結構描述。
問:哪些模型支援工具呼叫?
答: GPT-OSS 型自訂模型支援工具呼叫功能。工具呼叫可針對複雜的工作流程啟用函數呼叫。
問:在 2025 年 11 月 11 日之前匯入的模型會如何?
答:在 2025 年 11 月 11 日之前匯入的模型,會繼續像現有的 API 格式和功能一樣運作。
問:generation_config.json對於 OpenAI 型模型呢?
答:匯入 OpenAI 型模型時,請務必包含正確的generation_config.json檔案,例如 GPT-OSS。您必須使用更新的組態檔案 (2024 年 8 月 13 日更新),網址為 https://https://huggingface.co/openai/gpt-oss-20b/blob/main/generation_config.json。更新的組態包含三個end-of-sequence權杖 IDs ([200002, 199999, 200012]),而較舊的版本僅包含兩個權杖 ([200002, 199999])。使用過時的 generation_config.json 檔案會在模型調用期間導致執行時間錯誤。此檔案對於適當的模型行為至關重要,且必須包含在您的 OpenAI 型模型匯入中。
處理 ModelNotReadyException
Amazon Bedrock 自訂模型匯入會移除非作用中的模型,以最佳化硬體使用率。如果您嘗試調用已移除的模型,則會取得 ModelNotReadyException。移除模型並首次調用模型之後,自訂模型匯入會開始還原模型。還原時間取決於隨需機群大小和模型大小。
如果您的 InvokeModel或 InvokeModelWithStream 請求傳回 ModelNotReadyException,請依照步驟處理例外狀況。
-
設定重試
根據預設,系統會自動以指數退避重試請求。您可以設定重試次數上限。
下列範例示範如何設定重試。將 ${region-name}、${model-arn} 和 10 取代為您的區域、模型 ARN 和最大嘗試次數。
import json
import boto3
from botocore.config import Config
REGION_NAME = ${region-name}
MODEL_ID= '${model-arn}'
config = Config(
retries={
'total_max_attempts': 10, //customizable
'mode': 'standard'
}
)
message = "Hello"
session = boto3.session.Session()
br_runtime = session.client(service_name = 'bedrock-runtime',
region_name=REGION_NAME,
config=config)
try:
invoke_response = br_runtime.invoke_model(modelId=MODEL_ID,
body=json.dumps({'prompt': message}),
accept="application/json",
contentType="application/json")
invoke_response["body"] = json.loads(invoke_response["body"].read().decode("utf-8"))
print(json.dumps(invoke_response, indent=4))
except Exception as e:
print(e)
print(e.__repr__())
-
在重試嘗試期間監控回應代碼
每次重試嘗試都會開始模型還原程序。還原時間取決於隨需機群的可用性和模型大小。在還原程序進行時,監控回應代碼。
如果重試持續失敗,請繼續執行後續步驟。
-
驗證模型已成功匯入
您可以在主控台或呼叫 GetModelImportJob 操作來檢查匯入任務的狀態,以檢查模型是否成功匯入。檢查回應中的 Status 欄位。如果模型的狀態為完成,匯入任務即成功。
-
聯絡 支援進行進一步調查
使用 開啟票證 支援如需詳細資訊,請參閱建立支援案例。
在支援票證中包含相關詳細資訊,例如模型 ID 和時間戳記。