

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# プロビジョンドスループットのコード例
<a name="prov-thru-code-examples"></a>

次のコード例は、 と Python SDK を使用してプロビジョンドスループットを作成する方法と、プロビジョンドスループットを管理AWS CLIおよび呼び出す方法を示しています。プロビジョニングされたスループットは、基盤モデルまたは既にカスタマイズしたモデルから作成できます。開始する前に、次の前提条件を実行します。

**前提条件**

次の例では、Amazon Nova Liteモデル ID が であるモデルを使用します`amazon.nova-lite-v1:0:24k`。まだの場合は、「」の手順に従って へのアクセスAmazon Nova Liteをリクエストします[SDK と CLI を使用してモデルアクセスを管理する](model-access.md#model-access-modify)。

別の基盤モデルまたはカスタムモデルのプロビジョンドスループットを購入する場合は、以下を実行する必要があります。

1. 次のいずれかを実行して、モデルの ID (基盤モデルの場合）、名前 (カスタムモデルの場合）、または ARN (いずれかの場合) を見つけます。
   + 基盤モデルのプロビジョンドスループットを購入する場合は、次のいずれかの方法でプロビジョニングをサポートするモデルの ID または Amazon リソースネーム (ARN) を見つけます。
     + テーブルの値を検索します。
     + [ListFoundationModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListFoundationModels.html) リクエストを送信し、 として`byInferenceType`値を指定`PROVISIONED`して、プロビジョニングをサポートするモデルのリストを表示します。`modelId` または `modelArn`フィールドの値を見つけます。
   + カスタムモデルのプロビジョンドスループットを購入する場合は、次のいずれかの方法でカスタマイズしたモデルの名前または Amazon リソースネーム (ARN) を見つけます。
     + Amazon Bedrock コンソールで、左側のナビゲーションペインから**カスタムモデル**を選択します。カスタマイズされたモデルの名前を**モデル**リストで検索するか、それを選択してモデル**の詳細でモデル** **ARN** を見つけます。
     + [ListCustomModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListCustomModels.html) リクエストを送信し、レスポンスでカスタムモデルの `modelName`または `modelArn`値を見つけます。

1. 以下の例の [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) リクエスト`body`の を変更して、 で見つけてモデルの本文の形式に一致させます[Inference request parameters and response fields for foundation models](model-parameters.md)。

任意の方法のタブを選択し、その手順に従います。

------
#### [ AWS CLI ]

1. ターミナルで次のコマンドを実行して、[CreateProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateProvisionedModelThroughput.html) リクエストを送信し、*MyPT* という非コミットプロビジョンドスループットを作成します。

   ```
   aws bedrock create-provisioned-model-throughput \
      --model-units 1 \
      --provisioned-model-name MyPT \
      --model-id amazon.nova-lite-v1:0:24k
   ```

1. レスポンスは `provisioned-model-arn` を返します。作成が完了するまでしばらく待ちます。ステータスを確認するには、[GetProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetProvisionedModelThroughput.html) リクエストを送信し`provisioned-model-id`、次のコマンドを実行して、プロビジョニングされたモデルの名前または ARN を として指定します。

   ```
   aws bedrock get-provisioned-model-throughput \
       --provisioned-model-id ${provisioned-model-arn}
   ```

1. [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) リクエストを送信して、プロビジョニングされたモデルで推論を実行します。`CreateProvisionedModelThroughput` レスポンスで返されたプロビジョニング済みモデルの ARN を として指定します`model-id`。出力は、現在のフォルダの *output.txt* という名前のファイルに書き込まれます。

   ```
   aws bedrock-runtime invoke-model \
       --model-id ${provisioned-model-arn} \
       --body '{
                   "messages": [{
                       "role": "user",
                       "content": [{
                           "text": "Hello"
                       }]
                   }],
                   "inferenceConfig": {
                       "temperature":0.7
                   }
               }' \
       --cli-binary-format raw-in-base64-out \
       output.txt
   ```

1. 次のコマンドを使用して [DeleteProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_DeleteProvisionedModelThroughput.html) リクエストを送信し、プロビジョンドスループットを削除します。プロビジョンドスループットの料金は発生しなくなります。

   ```
   aws bedrock delete-provisioned-model-throughput 
     --provisioned-model-id MyPT
   ```

------
#### [ Python (Boto) ]

次のコードスニペットでは、プロビジョンドスループットを作成してその情報を取得し、プロビジョンドスループットを呼び出す方法について説明します。

1. *MyPT* という非コミットプロビジョンドスループットを作成し、プロビジョンドスループットの ARN を *provisioned\$1model\$1arn* という変数に割り当てるには、次の [CreateProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateProvisionedModelThroughput.html) リクエストを送信します。

   ```
   import boto3 
   
   provisioned_model_name = 'MyPT'
   
   bedrock = boto3.client(service_name='bedrock')
   response = bedrock.create_provisioned_model_throughput(
       modelUnits=1,
       provisionedModelName=provisioned_model_name, 
       modelId='amazon.nova-lite-v1:0:24k' 
   )
                           
   provisioned_model_arn = response['provisionedModelArn']
   ```

1. 作成が完了するまでしばらく待ちます。次のコードスニペットを使用して、ステータスを確認します。[CreateProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateProvisionedModelThroughput.html) レスポンスから返されるプロビジョンドスループットの名前または ARN を `provisionedModelId` として指定できます。

   ```
   bedrock.get_provisioned_model_throughput(provisionedModelId=provisioned_model_name)
   ```

1. 次のコマンドを使用し、プロビジョニングされたモデルの ARN を として使用して、更新されたプロビジョニングされたモデルで推論を実行します`modelId`。

   ```
   import json
   import logging
   import boto3
   
   from botocore.exceptions import ClientError
   
   
   class ImageError(Exception):
       "Custom exception for errors returned by the model"
   
       def __init__(self, message):
           self.message = message
   
   
   logger = logging.getLogger(__name__)
   logging.basicConfig(level=logging.INFO)
   
   
   def generate_text(model_id, body):
       """
       Generate text using your provisioned custom model.
       Args:
           model_id (str): The model ID to use.
           body (str) : The request body to use.
       Returns:
           response (json): The response from the model.
       """
   
       logger.info(
           "Generating text with your provisioned custom model %s", model_id)
   
       brt = boto3.client(service_name='bedrock-runtime')
   
       accept = "application/json"
       content_type = "application/json"
   
       response = brt.invoke_model(
           body=body, modelId=model_id, accept=accept, contentType=content_type
       )
       response_body = json.loads(response.get("body").read())
   
       finish_reason = response_body.get("error")
   
       if finish_reason is not None:
           raise ImageError(f"Text generation error. Error is {finish_reason}")
   
       logger.info(
           "Successfully generated text with provisioned custom model %s", model_id)
   
       return response_body
   
   
   def main():
       """
       Entrypoint for example.
       """
       try:
           logging.basicConfig(level=logging.INFO,
                               format="%(levelname)s: %(message)s")
   
           model_id = provisioned-model-arn
   
           body = json.dumps({
               "inputText": "what isAWS?"
           })
   
           response_body = generate_text(model_id, body)
           print(f"Input token count: {response_body['inputTextTokenCount']}")
   
           for result in response_body['results']:
               print(f"Token count: {result['tokenCount']}")
               print(f"Output text: {result['outputText']}")
               print(f"Completion reason: {result['completionReason']}")
   
       except ClientError as err:
           message = err.response["Error"]["Message"]
           logger.error("A client error occurred: %s", message)
           print("A client error occured: " +
                 format(message))
       except ImageError as err:
           logger.error(err.message)
           print(err.message)
   
       else:
           print(
               f"Finished generating text with your provisioned custom model {model_id}.")
   
   
   if __name__ == "__main__":
       main()
   ```

1. 次のコードスニペットを使用して、プロビジョンドスループットを削除します。プロビジョンドスループットの料金は発生しなくなります。

   ```
   bedrock.delete_provisioned_model_throughput(provisionedModelId=provisioned_model_name)
   ```

------