

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejecute solicitudes de API de Amazon Bedrock de ejemplo con un bloc de notas Amazon SageMaker AI
<a name="getting-started-api-ex-sm"></a>

En esta sección, se explica cómo probar algunas operaciones habituales en Amazon Bedrock con un bloc de notas de Amazon SageMaker AI para comprobar que los permisos de su rol de Amazon Bedrock están configurados correctamente. Antes de ejecutar los siguientes ejemplos, debe comprobar que cumple los requisitos previos que se indican a continuación:

**Requisitos previos**
+ Tiene un rol Cuenta de AWS y tiene permisos para acceder a él con los permisos necesarios para Amazon Bedrock. De lo contrario, siga estos pasos en [Inicio rápido](getting-started.md).
+ Realice los siguientes pasos para configurar los permisos de IAM para la SageMaker IA y crear un bloc de notas:

  1. Modifique la [política de confianza](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#term_trust-policy) del rol de Amazon Bedrock configurada en [Inicio rápido](getting-started.md) a través de la [consola](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html#roles-managingrole_edit-trust-policy), la [CLI](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-cli.html#roles-managingrole_edit-trust-policy-cli) o la [API](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-api.html#roles-managingrole_edit-trust-policy-api). Adjunta la siguiente política de confianza al rol para permitir que los servicios de Amazon Bedrock y SageMaker AI asuman el rol de 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. Inicie sesión en el rol de Amazon Bedrock cuya política de confianza acaba de modificar.

  1. Siga los pasos descritos en [Crear una instancia de Amazon SageMaker AI Notebook para ver el tutorial](https://docs.aws.amazon.com/sagemaker/latest/dg/gs-setup-working-env.html) y especifique el ARN del rol de Amazon Bedrock que creó para crear una instancia de Amazon SageMaker AI Notebook.

  1. **Cuando el **estado** de la instancia del bloc de notas sea **InService**, elija la instancia y, a continuación, elija Abrir. JupyterLab**

Después de abrir tu bloc de notas de SageMaker IA, puedes probar los siguientes ejemplos:

**Topics**
+ [Enumeración de los modelos fundacionales que ofrece Amazon Bedrock](#getting-started-api-ex-sm-listfm)
+ [Envío de una petición de texto a un modelo y generación de una respuesta](#getting-started-api-ex-sm-converse)

## Enumeración de los modelos fundacionales que ofrece Amazon Bedrock
<a name="getting-started-api-ex-sm-listfm"></a>

En el siguiente ejemplo, se ejecuta la [ListFoundationModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListFoundationModels.html)operación con un cliente Amazon Bedrock. `ListFoundationModels`muestra los modelos de base (FMs) que están disponibles en Amazon Bedrock en su región. Ejecute el siguiente script de SDK para Python para crear un cliente Amazon Bedrock y probar la [ListFoundationModels](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_ListFoundationModels.html)operación:

```
"""
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()
```

Si el script se ejecuta correctamente, la respuesta devuelve una lista de modelos fundacionales disponibles en Amazon Bedrock.

## Envío de una petición de texto a un modelo y generación de una respuesta
<a name="getting-started-api-ex-sm-converse"></a>

En el siguiente ejemplo se ejecuta la operación [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) con un cliente de Amazon Bedrock. `Converse` le permite enviar una petición para generar una respuesta del modelo. Ejecute el siguiente script de SDK para Python para crear un cliente de tiempo de ejecución de Amazon Bedrock y probar la operación [Converse](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html):

```
# Use the Conversation API to send a text message to Amazon Nova Micro.

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 Nova Micro.
model_id = "amazon.nova-micro-v1:0"

# 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)
```

Si el comando se ejecuta correctamente, la respuesta devuelve el texto generado por el modelo en respuesta a la petición.