

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

# 調用匯入的模型
<a name="invoke-imported-model"></a>

在您傳送 [CreateModelImportJob](https://docs.aws.amazon.com//bedrock/latest/APIReference/API_CreateModelImportJob.html) 請求之後，模型匯入任務可能需要幾分鐘的時間才能匯入您的模型。您可以在主控台或呼叫 [GetModelImportJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetModelImportJob.html) 操作並檢查回應中的 `Status` 欄位，以檢查匯入任務的狀態。如果模型的狀態為**完成**，匯入任務即完成。

在 Amazon Bedrock 中提供匯入的模型之後，您可以透過傳送 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 或 [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) 請求，對模型進行推論呼叫，以隨需輸送量使用模型。如需詳細資訊，請參閱[使用 InvokeModel 提交單一提示](inference-invoke.md)。

若要使用訊息格式與匯入的模型連接，您可以呼叫 [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) 或 [ConverseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_ConverseStream.html) 操作。如需詳細資訊，請參閱[使用 Converse API](conversation-inference-call.md)。

**注意**  
Qwen2.5、Qwen2-VL, Qwen2.5-VL 和 GPT-OSS模型不支援 Converse API。

## 增強型 API 支援：多個 API 格式
<a name="enhanced-api-support"></a>

自 2025 年 11 月 17 日起，Amazon Bedrock Custom Model Import 支援全面的 OpenAI 相容 API 格式，可讓您靈活地整合和部署自訂模型。2025 年 11 月 11 日之後匯入的所有模型都會自動受益於這些增強功能，而不需要額外的組態。

自訂模型匯入現在支援三種 API 格式：
+ **BedrockCompletion （文字）** - 與目前的 Bedrock 工作流程相容
+ **OpenAICompletion （文字）** - OpenAI 完成結構描述相容性
+ **OpenAIChatCompletion （文字和影像）** - 完整的對話式結構描述相容性

這些增強功能包括強制執行 JSON 結構描述和模式的結構化輸出、具有多影像處理的增強視覺支援、模型可信度洞察的日誌機率，以及GPT-OSS模型的工具呼叫功能。

如需詳細的 API 參考文件，請參閱官方 OpenAI 文件：
+ 完成：[OpenAI 完成 API](https://platform.openai.com/docs/api-reference/completions)
+ ChatCompletion：[OpenAI Chat API](https://platform.openai.com/docs/api-reference/chat)

### API 格式範例
<a name="api-format-examples"></a>

下列範例示範如何在匯入的模型中使用四種支援的 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](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListImportedModels.html) 請求來取得匯入模型的模型 ARN。

當您使用 `InvokeModel` 或 `InvokeModelWithStream` 調用匯入的模型時，您的請求會在 5 分鐘內提供，否則您可能會收到 `ModelNotReadyException`。若要了解 ModelNotReadyException，請依照下一節中的步驟處理 ModelNotreadyException。

## 常見問答集
<a name="api-format-faq"></a>

**問：我應該使用哪種 API 格式？**

答：為了與各種 SDKs 的最大相容性，我們建議您使用 OpenAICompletion 或 OpenAIChatCompletion 格式，因為它們提供不同工具和程式庫廣泛支援的 OpenAI 相容結構描述。

**問：在 Amazon Bedrock GPT-OSS上，自訂模型匯入是否支援 Converse API？**

答：編號GPT-OSS型自訂模型匯入模型不支援 Converse API 或 ConverseStream API。使用 GPT-OSS型自訂模型時，您必須使用 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 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\$1config.json](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
<a name="handle-model-not-ready-exception"></a>

Amazon Bedrock 自訂模型匯入會移除非作用中的模型，以最佳化硬體使用率。如果您嘗試調用已移除的模型，則會取得 `ModelNotReadyException`。移除模型並首次調用模型之後，自訂模型匯入會開始還原模型。還原時間取決於隨需機群大小和模型大小。

如果您的 `InvokeModel`或 `InvokeModelWithStream` 請求傳回 `ModelNotReadyException`，請依照步驟處理例外狀況。

1. 

**設定重試**

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

   下列範例示範如何設定重試。將 *\$1\$1region-name\$1*、*\$1\$1model-arn\$1* 和 *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__())
   ```

1. 

**在重試嘗試期間監控回應代碼**

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

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

1. 

**驗證模型已成功匯入**

   您可以在主控台或呼叫 [GetModelImportJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetModelImportJob.html) 操作來檢查匯入任務的狀態，以檢查模型是否成功匯入。檢查回應中的 `Status` 欄位。如果模型的狀態為**完成**，匯入任務即成功。

1. 

**聯絡 支援進行進一步調查**

   使用 開啟票證 支援如需詳細資訊，請參閱[建立支援案例](https://docs.aws.amazon.com//awssupport/latest/user/case-management.html)。

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