

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Integração do Amazon Redshift ML com o Amazon Bedrock
<a name="machine-learning-br"></a>

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.

**Topics**
+ [Criar ou atualizar um perfil do IAM para a integração do Amazon Redshift ML com o Amazon Bedrock](#machine-learning-br-iam)
+ [Criar ou atualizar um modelo externo para a integração do Amazon Redshift ML com o Amazon Bedrock](#machine-learning-br-create)
+ [Usar um modelo externo para a integração do Amazon Redshift ML com o Amazon Bedrock](#machine-learning-br-use)
+ [Engenharia de prompts para a integração do Amazon Redshift ML com o Amazon Bedrock](#machine-learning-br-prompt)

## Criar ou atualizar um perfil do IAM para a integração do Amazon Redshift ML com o Amazon Bedrock
<a name="machine-learning-br-iam"></a>

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:

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

****  

```
{
   "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](getting-started-machine-learning.md#admin-setup). 

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:
+ [Definir cluster e configuração para administração do Amazon Redshift ML](getting-started-machine-learning.md#admin-setup)
+ [ Permissões necessárias para usar o machine learning (ML) do Amazon Redshift)](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#iam-permission-ml?)

Para ter informações sobre como a criar um perfil do IAM, consulte [Criar um perfil do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html) 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
<a name="machine-learning-br-create"></a>

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](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html) 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`, como demonstra o exemplo a seguir. 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. Habilite o acesso ao modelo Titan Text G1 — Express no Amazon Bedrock antes de executar o exemplo a seguir. 

```
CREATE EXTERNAL MODEL titan_raw
FUNCTION func_titan_raw
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'amazon.titan-text-express-v1',
   REQUEST_TYPE RAW,
   RESPONSE_TYPE SUPER);
```

Se precisar de mais informações sobre uma solicitação de entrada, como total de tokens, você poderá solicitar `RESPONSE_TYPE` para ser `super` ao criar o modelo. 

```
CREATE EXTERNAL MODEL patient_recommendations_v2
FUNCTION patient_recommendations_func_v2
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2',
   PROMPT 'Generate personalized diet plan for following patient:',
   RESPONSE_TYPE SUPER);
```

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 obter mais detalhes, consulte [Engenharia de prompts para a integração do Amazon Redshift ML com o Amazon Bedrock](#machine-learning-br-prompt).

Para ter mais informações sobre a instrução `CREATE EXTERNAL MODEL` e os respectivos parâmetros e configurações, consulte [CREATE EXTERNAL MODEL](r_create_external_model.md).

## Usar um modelo externo para a integração do Amazon Redshift ML com o Amazon Bedrock
<a name="machine-learning-br-use"></a>

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

**Topics**
+ [Inferência com modelos do tipo de solicitação `UNIFIED`](#machine-learning-br-use-unified)
+ [Inferência com modelos do tipo de solicitação `RAW`](#machine-learning-br-use-raw)
+ [A inferência funciona como funções somente de líder](#machine-learning-br-use-leader)
+ [Observações sobre o uso de funções de inferência](#machine-learning-br-use-usage)

### Inferência com modelos do tipo de solicitação `UNIFIED`
<a name="machine-learning-br-use-unified"></a>

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 name="machine-learning-br-use-raw"></a>

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
<a name="machine-learning-br-use-leader"></a>

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
<a name="machine-learning-br-use-usage"></a>

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](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html) 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](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html) 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
<a name="machine-learning-br-prompt"></a>

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