Integração do Amazon Redshift ML com o Amazon Bedrock - Amazon Redshift

Integração do Amazon Redshift ML com o Amazon Bedrock

Esta seção descreve como usar a integração do Amazon Redshift ML com o Amazon Bedrock. Com esse recurso, você pode invocar um modelo do Amazon Bedrock usando SQL e utilizar seus dados de um data warehouse do Amazon Redshift para criar aplicações de IA generativa, como geração de texto, análise de sentimentos ou tradução.

Criar ou atualizar um perfil do IAM para a integração do Amazon Redshift ML com o Amazon Bedrock

Esta seção descreve como criar um perfil do IAM para usar a integração do Amazon Redshift ML com o Amazon Bedrock.

Adicione a seguinte política ao perfil do IAM que você usa com a integração do Amazon Redshift ML com o Amazon Bedrock:

  • AmazonBedrockFullAccess

Para permitir que o Amazon Redshift assuma um perfil para interagir com outros serviços, adicione a seguinte política de confiança aio perfil do IAM:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Se o cluster ou namespace estiver em uma VPC, siga as instruções em Definir cluster e configuração para administração do Amazon Redshift ML.

Se precisar de uma política mais restritiva, você pode criar uma que inclua somente as permissões do Amazon Bedrock especificadas nas seguintes páginas:

Para ter informações sobre como a criar um perfil do IAM, consulte Criar um perfil do IAM no Guia do usuário do AWS Identity and Access Management.

Criar ou atualizar um modelo externo para a integração do Amazon Redshift ML com o Amazon Bedrock

Esta seção mostra como criar um modelo externo para usar como interface para o Amazon Bedrock no data warehouse do Amazon Redshift.

Para invocar um modelo do Amazon Bedrock por meio do Amazon Redshift, você deve primeiro executar o comando CREATE EXTERNAL MODEL. Esse comando cria um objeto de modelo externo no banco de dados e uma função de usuário associada que você usa para gerar conteúdo textual com o Amazon Bedrock.

O seguinte exemplo de código mostra um comando CREATE EXTERNAL MODEL básico:

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:');

O comando CREATE EXTERNAL MODEL tem uma interface unificada e consistente com o Amazon Bedrock para todos os modelos de base (FMs) que comportam mensagens. Essa é a opção padrão ao usar o comando CREATE EXTERNAL MODEL ou ao especificar explicitamente que o tipo de solicitação deve ser UNIFIED. Para ter mais informações, consulte a documentação da API Converse na documentação de API do Amazon Bedrock.

Se um FM não comportar mensagens, você deverá definir a configuração request_type como RAW. Ao definir request_type como RAW, você deve criar a solicitação enviada ao Amazon Bedrock ao usar a função de inferência com base no FM selecionado.

O parâmetro PROMPT para o comando CREATE EXTERNAL MODEL é um prompt estático. Se você precisar de um prompt dinâmico para sua aplicação, deverá especificá-lo ao usar a função de inferência. Para ter mais detalhes, consulte Engenharia de prompts para a integração do Amazon Redshift ML com o Amazon Bedrock a seguir.

Para ter mais informações sobre a instrução CREATE EXTERNAL MODEL e os respectivos parâmetros e configurações, consulte CREATE EXTERNAL MODEL.

Usar um modelo externo para a integração do Amazon Redshift ML com o Amazon Bedrock

Esta seção mostra como invocar um modelo externo para gerar texto em resposta aos prompts fornecidos. Para invocar um modelo externo, use a função de inferência que você criou com CREATE EXTERNAL MODEL.

Inferência com modelos do tipo de solicitação UNIFIED

A função de inferência para modelos com o tipo de solicitação UNIFIED tem os três seguintes parâmetros, que são passados sequencialmente para a função:

  • Texto de entrada (obrigatório): esse parâmetro especifica o texto de entrada que o Amazon Redshift passa para o Amazon Bedrock.

  • Configuração de inferência e Campos adicionais de solicitação de modelo (opcional): o Amazon Redshift passa esses parâmetros para os parâmetros correspondentes da API de modelo Converse.

O seguinte exemplo de código mostra como usar uma função de inferência do tipo UNIFIED:

SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500)) FROM some_data;

Inferência com modelos do tipo de solicitação RAW

A função de inferência para modelos com o tipo de solicitação RAW tem apenas um parâmetro do tipo de dados SUPER. A sintaxe desse parâmetro depende do modelo do Amazon Bedrock que é usado.

O seguinte exemplo de código mostra como usar uma função de inferência do tipo RAW:

SELECT llm_titan_func( object( "inputText", "Summarize the following text: " | input_text, "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500) ) ) FROM some_data;

A inferência funciona como funções somente de líder

As funções de inferência para modelos do Amazon Bedrock podem ser executadas como funções somente de nós líderes quando a consulta que as utiliza não faz referência a nenhuma tabela. Isso pode ser útil se você quiser fazer uma pergunta rapidamente a um LLM.

O seguinte exemplo de código mostra como usar uma função de inferência somente de líder:

SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');

Observações sobre o uso de funções de inferência

Observe o seguinte ao usar funções de inferência com a integração do Amazon Redshift ML com o Amazon Bedrock:

  • Os nomes dos parâmetros de todos os modelos do Amazon Bedrock diferenciam maiúsculas e minúsculas. Se seus parâmetros não corresponderem aos exigidos pelo modelo, o Amazon Bedrock poderá ignorá-los discretamente.

  • O throughput das consultas de inferência é limitado pelas cotas de tempo de execução dos diferentes modelos oferecidos pelo Amazon Bedrock em diferentes regiões. Para ter mais informações, consulte Quotas for Amazon Bedrock no Guia do usuário do Amazon Bedrock.

  • Se você precisar de um throughput garantido e consistente, considere a possibilidade de obter throughput provisionado do Amazon Bedrock para o modelo de que você precisa. Para ter mais informações, consulte Increase model invocation capacity with Provisioned Throughput in Amazon Bedrock no Guia do usuário do Amazon Bedrock.

  • Consultas de inferência com grandes quantidades de dados podem ter exceções de controle de utilização. Isso se deve às cotas limitadas de tempo de execução do Amazon Bedrock. O Amazon Redshift repete as solicitações várias vezes, mas as consultas ainda assim podem ter controle de utilização porque o throughput para modelos não provisionados pode ser variável.

  • Se você encontrar exceções de controle de utilização provenientes do Amazon Bedrock, como Too many requests, please wait before trying again., mesmo com pequenas quantidades de dados, verifique as cotas em Cotas de serviço na sua conta do Amazon Bedrock. Verifique se a cota aplicada no nível da conta é pelo menos igual ao valor da cota padrão da AWS para as solicitações InvokeModel do modelo que você está usando.

Engenharia de prompts para a integração do Amazon Redshift ML com o Amazon Bedrock

Esta seção mostra como usar prompts estáticos com um modelo externo.

Para usar prompts de prefixo e sufixo estáticos em seu modelo externo, forneça-os usando os parâmetros SUFFIX e PROMPT da instrução CREATE EXTERNAL MODEL. Esses prompts são adicionados a cada consulta usando o modelo externo.

O seguinte exemplo mostra como adicionar prompts de prefixo e sufixo a um modelo externo:

CREATE EXTERNAL MODEL llm_claude FUNCTION llm_claude_func IAM_ROLE '<IAM role arn>' MODEL_TYPE BEDROCK SETTINGS ( MODEL_ID 'anthropic.claude-v2:1', PROMPT 'Summarize the following text:', SUFFIX 'Respond in an analytic tone');

Para usar prompts dinâmicos, você pode fornecê-los ao usar a função de inferência concatenando-os na entrada da função. O seguinte exemplo mostra como usar prompts dinâmicos com uma função de inferência:

SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.') FROM some_data