調用匯入的模型 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

調用匯入的模型

在您傳送 CreateModelImportJob 請求之後,模型匯入任務可能需要幾分鐘的時間才能匯入您的模型。您可以在主控台或呼叫 GetModelImportJob 操作並檢查回應中的 Status 欄位,以檢查匯入任務的狀態。如果模型的狀態為完成,匯入任務即完成。

在 Amazon Bedrock 中提供匯入的模型之後,您可以透過傳送 InvokeModelInvokeModelWithResponseStream 請求,對模型進行推論呼叫,以隨需輸送量使用模型。如需詳細資訊,請參閱使用 InvokeModel 提交單一提示

若要使用訊息格式與匯入的模型連接,您可以呼叫 ConverseConverseStream 操作。如需詳細資訊,請參閱使用 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 格式範例

下列範例示範如何在匯入的模型中使用四種支援的 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_objectjson_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、、 regexgrammar限制條件。

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_formatstructured_outputs 參數的結構化輸出。對於視覺功能,請在包含 base64 編碼影像資料的內容陣列中包含影像。

注意

若要使用 ChatCompletion 格式,聊天範本必須是 的一部分tokenizer_config.json。自訂模型匯入不會將任何預設聊天範本套用至請求。

您需要模型 ARN,才能對新匯入的模型進行推論呼叫。成功完成匯入任務並啟用匯入的模型後,您可以在主控台中或透過傳送 ListImportedModels 請求來取得匯入模型的模型 ARN。

當您使用 InvokeModelInvokeModelWithStream 調用匯入的模型時,您的請求會在 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。移除模型並首次調用模型之後,自訂模型匯入會開始還原模型。還原時間取決於隨需機群大小和模型大小。

如果您的 InvokeModelInvokeModelWithStream 請求傳回 ModelNotReadyException,請依照步驟處理例外狀況。

  1. 設定重試

    根據預設,系統會自動以指數退避重試請求。您可以設定重試次數上限。

    下列範例示範如何設定重試。將 ${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__())
  2. 在重試嘗試期間監控回應代碼

    每次重試嘗試都會開始模型還原程序。還原時間取決於隨需機群的可用性和模型大小。在還原程序進行時,監控回應代碼。

    如果重試持續失敗,請繼續執行後續步驟。

  3. 驗證模型已成功匯入

    您可以在主控台或呼叫 GetModelImportJob 操作來檢查匯入任務的狀態,以檢查模型是否成功匯入。檢查回應中的 Status 欄位。如果模型的狀態為完成,匯入任務即成功。

  4. 聯絡 支援進行進一步調查

    使用 開啟票證 支援如需詳細資訊,請參閱建立支援案例

    在支援票證中包含相關詳細資訊,例如模型 ID 和時間戳記。