

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esempi di codice per Provisioned Throughput
<a name="prov-thru-code-examples"></a>

I seguenti esempi di codice mostrano come creare un Provisioned Throughput e come gestirlo e richiamarlo utilizzando AWS CLI l'SDK Python. È possibile creare un Provisioned Throughput a partire da un modello base o da un modello già personalizzato. Prima di iniziare, esegui i seguenti prerequisiti:

**Prerequisiti**

Negli esempi seguenti viene utilizzato il Amazon Nova Lite modello, il cui ID del modello è`amazon.nova-lite-v1:0:24k`. Se non l'hai già fatto, richiedi l'accesso a Amazon Nova Lite seguendo i passaggi riportati in[Gestisci l'accesso ai modelli tramite SDK e CLI](model-access.md#model-access-modify).

Se desideri acquistare Provisioned Throughput per un modello di base diverso o per un modello personalizzato, dovrai fare quanto segue:

1. Trova l'ID del modello (per i modelli base), il nome (per i modelli personalizzati) o l'ARN (per entrambi) effettuando una delle seguenti operazioni:
   + Se stai acquistando un Provisioned Throughput per un modello base, trova l'ID o Amazon Resource Name (ARN) di un modello che supporta il provisioning in uno dei seguenti modi:
     + Cerca il valore nella tabella.
     + Invia una [ListFoundationModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListFoundationModels.html)richiesta e specifica il `byInferenceType` valore `PROVISIONED` per visualizzare un elenco di modelli che supportano il provisioning. Trova il valore nel `modelArn` campo `modelId` or.
   + Se stai acquistando un Provisioned Throughput per un modello personalizzato, trova il nome o Amazon Resource Name (ARN) del modello che hai personalizzato in uno dei seguenti modi:
     + Nella console Amazon Bedrock, scegli **Modelli personalizzati** dal riquadro di navigazione a sinistra. Trova il nome del tuo modello personalizzato nell'elenco dei **modelli** o selezionalo e trova il **modello ARN nei dettagli** del **modello**.
     + Invia una [ListCustomModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListCustomModels.html)richiesta e trova il `modelArn` valore `modelName` o il valore del tuo modello personalizzato nella risposta.

1. Modifica il `body` valore della [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)richiesta negli esempi seguenti in modo che corrisponda al formato del corpo del modello trovandolo in[Parametri di richiesta di inferenza e campi di risposta per i modelli di fondazione](model-parameters.md).

Scegli la scheda relativa al metodo che preferisci, quindi segui la procedura:

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

1. Inviate una [CreateProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateProvisionedModelThroughput.html)richiesta per creare un Provisioned Throughput senza impegno chiamato*MyPT*, eseguendo il seguente comando in un terminale:

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

1. La risposta restituisce un `provisioned-model-arn`. Attendi del tempo per il completamento della creazione. Per verificarne lo stato, invia una [GetProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_GetProvisionedModelThroughput.html)richiesta e fornisci il nome o l'ARN del modello fornito come`provisioned-model-id`, eseguendo il comando seguente:

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

1. Esegui l'inferenza con il modello fornito inviando una richiesta. [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) Fornire l'ARN del modello fornito che è stato restituito nella `CreateProvisionedModelThroughput` risposta, come. `model-id` L'output viene scritto in un file denominato *output.txt* nella cartella corrente.

   ```
   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. Inviate una [DeleteProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_DeleteProvisionedModelThroughput.html)richiesta per eliminare il Provisioned Throughput utilizzando il seguente comando. Non ti verrà più addebitato alcun costo per il Provisioned Throughput.

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

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

I seguenti frammenti di codice illustrano la creazione di un Provisioned Throughput, l'acquisizione di informazioni al riguardo e l'utilizzo del Provisioned Throughput.

1. Per creare un Provisioned Throughput chiamato senza impegno *MyPT* e assegnare l'ARN del Provisioned Throughput a una variabile chiamata, invia la seguente richiesta: *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. Attendi del tempo per il completamento della creazione. Puoi verificarne lo stato con il seguente frammento di codice. È possibile fornire il nome del Provisioned Throughput o l'ARN restituito dalla [CreateProvisionedModelThroughput](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateProvisionedModelThroughput.html)risposta come. `provisionedModelId`

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

1. Esegui l'inferenza con il tuo modello fornito aggiornato con il seguente comando e utilizzando l'ARN del modello fornito come. `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. Eliminate il Provisioned Throughput con il seguente frammento di codice. Il Provisioned Throughput non ti verrà più addebitato.

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

------