

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à.

# Esegui esempi di richieste API Amazon Bedrock utilizzando un notebook Amazon SageMaker AI
<a name="getting-started-api-ex-sm"></a>

Questa sezione ti guida a provare alcune operazioni comuni in Amazon Bedrock con un notebook Amazon SageMaker AI per verificare che le autorizzazioni dei ruoli Amazon Bedrock siano configurate correttamente. Prima di eseguire i seguenti esempi, devi verificare di aver soddisfatto i seguenti prerequisiti:

**Prerequisiti**
+ Disponi Account AWS e disponi delle autorizzazioni per accedere a un ruolo con le autorizzazioni necessarie per Amazon Bedrock. In caso contrario, segui le fasi in [Guida introduttiva](getting-started.md).
+ Esegui i seguenti passaggi per configurare le autorizzazioni IAM per l' SageMaker intelligenza artificiale e creare un notebook:

  1. Modifica la [policy di attendibilità](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#term_trust-policy) del ruolo Amazon Bedrock che configuri in [Guida introduttiva](getting-started.md) tramite [console](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy), [CLI](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli) o [API.](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-managingrole_edit-trust-policy-api) Allega la seguente politica di fiducia al ruolo per consentire ai servizi Amazon Bedrock e SageMaker AI di assumere il ruolo di Amazon Bedrock:

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "BedrockTrust",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": "bedrock.amazonaws.com"
                 },
                 "Action": "sts:AssumeRole"
             },
             {
                 "Sid": "SagemakerTrust",
                 "Effect": "Allow",
                 "Principal": {
                     "Service": "sagemaker.amazonaws.com"
                 },
                 "Action": "sts:AssumeRole"
             }
         ]
     }
     ```

------

  1. Accedi al ruolo di Amazon Bedrock di cui hai appena modificato la policy di attendibilità.

  1. Segui i passaggi in [Crea un'istanza Amazon SageMaker AI Notebook per il tutorial](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) e specifica l'ARN del ruolo Amazon Bedrock che hai creato per creare un'istanza di notebook SageMaker AI.

  1. **Quando **lo stato** dell'istanza del notebook è impostato su **InService**, scegli l'istanza, quindi scegli Apri. JupyterLab**

Dopo aver aperto il notebook SageMaker AI, puoi provare i seguenti esempi:

**Topics**
+ [Elencare i modelli di fondazione offerti da Amazon Bedrock](#getting-started-api-ex-sm-listfm)
+ [Inviare un prompt di testo a un modello e generare una risposta](#getting-started-api-ex-sm-converse)

## Elencare i modelli di fondazione offerti da Amazon Bedrock
<a name="getting-started-api-ex-sm-listfm"></a>

L'esempio seguente esegue l'[ListFoundationModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListFoundationModels.html)operazione utilizzando un client Amazon Bedrock. `ListFoundationModels`elenca i modelli base (FMs) disponibili in Amazon Bedrock nella tua regione. Esegui il seguente script SDK for Python per creare un client Amazon Bedrock e testarne il funzionamento: [ListFoundationModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListFoundationModels.html)

```
"""
Lists the available Amazon Bedrock models in an &AWS-Region;.
"""
import logging
import json
import boto3


from botocore.exceptions import ClientError


logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


def list_foundation_models(bedrock_client):
    """
    Gets a list of available Amazon Bedrock foundation models.

    :return: The list of available bedrock foundation models.
    """

    try:
        response = bedrock_client.list_foundation_models()
        models = response["modelSummaries"]
        logger.info("Got %s foundation models.", len(models))
        return models

    except ClientError:
        logger.error("Couldn't list foundation models.")
        raise


def main():
    """Entry point for the example. Change aws_region to the &AWS-Region;
    that you want to use."""
   
    aws_region = "us-east-1"

    bedrock_client = boto3.client(service_name="bedrock", region_name=aws_region)
    
    fm_models = list_foundation_models(bedrock_client)
    for model in fm_models:
        print(f"Model: {model["modelName"]}")
        print(json.dumps(model, indent=2))
        print("---------------------------\n")
    
    logger.info("Done.")

if __name__ == "__main__":
    main()
```

Se lo script ha esito positivo, la risposta restituisce un elenco di modelli di fondazione disponibili in Amazon Bedrock.

## Inviare un prompt di testo a un modello e generare una risposta
<a name="getting-started-api-ex-sm-converse"></a>

L’esempio seguente esegue l’operazione [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) utilizzando un client Amazon Bedrock. `Converse` consente di inviare un prompt per generare una risposta del modello. Esegui il seguente script SDK per Python per creare un client di runtime Amazon Bedrock e testare l’operazione [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html):

```
# Use the Conversation API to send a text message to Amazon Titan Text G1 - Express.

import boto3
from botocore.exceptions import ClientError

# Create an Amazon Bedrock Runtime client.
brt = boto3.client("bedrock-runtime")

# Set the model ID, e.g., Amazon Titan Text G1 - Express.
model_id = "amazon.titan-text-express-v1"

# Start a conversation with the user message.
user_message = "Describe the purpose of a 'hello world' program in one line."
conversation = [
    {
        "role": "user",
        "content": [{"text": user_message}],
    }
]

try:
    # Send the message to the model, using a basic inference configuration.
    response = brt.converse(
        modelId=model_id,
        messages=conversation,
        inferenceConfig={"maxTokens": 512, "temperature": 0.5, "topP": 0.9},
    )

    # Extract and print the response text.
    response_text = response["output"]["message"]["content"][0]["text"]
    print(response_text)

except (ClientError, Exception) as e:
    print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}")
    exit(1)
```

Se il comando ha esito positivo, la risposta invia il testo generato dal modello in risposta al prompt.