Exécution des exemples de demandes d’API Amazon Bedrock à l’aide d’un bloc-notes Amazon SageMaker AI
Cette section vous guide à travers quelques opérations courantes dans Amazon Bedrock avec bloc-notes Amazon SageMaker AI afin de vérifier que vos autorisations de rôle Amazon Bedrock sont correctement configurées. Avant d’exécuter les exemples suivants, vous devez vérifier que vous remplissez les conditions préalables suivantes :
Conditions préalables
-
Vous possédez un Compte AWS et êtes autorisé à accéder à un rôle avec les autorisations nécessaires pour Amazon Bedrock. Sinon, suivez les étapes décrites dans la section J’ai déjà un Compte AWS.
-
Suivez les étapes ci-dessous pour configurer les autorisations IAM pour SageMaker AI et créer un bloc-notes :
-
Modifiez la politique de confiance du rôle Amazon Bedrock que vous avez configuré dans J’ai déjà un Compte AWS via la console, l’interface de ligne de commande (CLI) ou l’API. Associez la politique de confiance suivante au rôle afin de permettre aux services Amazon Bedrock et SageMaker AI d’assumer le rôle Amazon Bedrock :
-
Connectez-vous au rôle Amazon Bedrock dont vous venez de modifier la politique de confiance.
-
Suivez les étapes décrites dans Création d’une instance de bloc-notes Amazon SageMaker AI pour le didacticiel et spécifiez l’ARN du rôle Amazon Bedrock que vous avez créé pour créer une instance de bloc-notes SageMaker AI.
-
Lorsque le statut de l’instance de bloc-notes est InService, choisissez l’instance, puis choisissez Ouvrir JupyterLab.
-
Après avoir ouvert votre bloc-notes SageMaker AI, vous pouvez essayer les exemples suivants :
Rubriques
Liste des modèles de fondation proposés par Amazon Bedrock
L’exemple suivant exécute l’opération ListFoundationModels à l’aide d’un client Amazon Bedrock. ListFoundationModels répertorie les modèles de fondation (FM) disponibles sur Amazon Bedrock dans votre région. Exécutez le script du kit SDK pour Python suivant afin de créer un client Amazon Bedrock et de tester l’opération ListFoundationModels :
""" 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 le script aboutit, la réponse renvoie une liste des modèles de fondation disponibles sur Amazon Bedrock.
Soumission d’une invite de texte à un modèle et génération d’une réponse
L’exemple suivant exécute l’opération Converse à l’aide d’un client Amazon Bedrock. Converse vous permet d’envoyer une invite pour générer un modèle de réponse. Exécutez le script du kit SDK pour Python suivant afin de créer un client d’exécution Amazon Bedrock et de tester l’opération Converse :
# 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)
Si la commande aboutit, la réponse renvoie le texte généré par le modèle en réponse à l’invite.