Executar exemplos de solicitações de API do Amazon Bedrock usando um caderno do Amazon SageMaker AI - Amazon Bedrock

Executar exemplos de solicitações de API do Amazon Bedrock usando um caderno do Amazon SageMaker AI

Esta seção orienta você a experimentar algumas operações comuns no Amazon Bedrock usando um caderno do Amazon SageMaker AI para testar se as permissões e a autenticação estão configuradas corretamente. Antes de executar os exemplos abaixo, verifique se os seguintes pré-requisitos foram atendidos:

Pré-requisitos

  • Você tem uma Conta da AWS e permissões para acessar uma função com as permissões necessárias para o Amazon Bedrock. Caso contrário, siga as etapas em Já tenho uma Conta da AWS.

  • Execute as seguintes etapas para configurar as permissões do IAM para o SageMaker AI e criar um caderno:

    1. Modifique a política de confiança da função do Amazon Bedrock que configurou em Já tenho uma Conta da AWS por meio do console, da CLI ou da API. Anexe a seguinte política de confiança ao perfil para permitir que os serviços do Amazon Bedrock e do SageMaker AI assumam o perfil do 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" } ] }
    2. Faça login na função do Amazon Bedrock cuja política de confiança você acabou de modificar.

    3. Siga as etapas em Criar uma instância de caderno do Amazon SageMaker AI para o tutorial e especifique o ARN do perfil do Amazon Bedrock que você criou para criar uma instância de caderno do SageMaker AI.

    4. Quando o Status da instância do caderno for InService, escolha a instância e escolha Abrir JupyterLab.

Após a abertura do primeiro caderno do SageMaker AI, é possível experimentar os seguintes exemplos:

Listar os modelos de base que o Amazon Bedrock oferece

O exemplo a seguir executa a operação ListFoundationModels usando um cliente do Amazon Bedrock. ListFoundationModels lista os modelos de base (FMs) que estão disponíveis no Amazon Bedrock em sua região. Execute o seguinte script do SDK para Python para criar um cliente do Amazon Bedrock e testar a operação 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()

Se o script for bem-sucedido, a resposta retornará uma lista de modelos de base que estão disponíveis no Amazon Bedrock.

Enviar um prompt de texto a um modelo e gerar uma resposta

O exemplo a seguir executa a operação Converse usando um cliente do Amazon Bedrock. Converse permite enviar um prompt para gerar uma resposta do modelo. Execute o seguinte script do SDK para Python para criar um cliente de runtime do Amazon Bedrock e testar a operação 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)

Se o comando for bem-sucedido, a resposta retornará o texto gerado pelo modelo em resposta ao prompt.