Utilização de SELECT AI para Gerar SQL com base em Prompts de Linguagem Natural

Autonomous AI Database on Dedicated Exadata Infrastructure Select AI permite consultar seus dados usando linguagem natural.

O recurso Selecionar IA permite que o Autonomous AI Database use IA generativa com LLMs (Large Language Models, Modelos de linguagem grande) para converter o texto de entrada do usuário no Oracle SQL. Selecione AI processa o prompt de linguagem natural, complementa o prompt com metadados e, em seguida, gera e executa uma consulta SQL.

Plataformas com Suporte

O Select AI é suportado no Autonomous AI Database Serverless e no Autonomous AI Database em Dedicated Exadata Infrastructure e Cloud at Customers.

  • Autonomous AI Database sem Servidor
  • Autonomous AI Database em Infraestrutura Dedicada do Exadata
  • Autonomous AI Database em Região Dedicada do Exadata Infrastructure
  • Autonomous AI Database Cloud@Customer

Sobre a Geração de SQL

Agora é possível usar linguagem natural para interagir com os dados do banco de dados com LLMs. Isso significa que você pode usar uma linguagem natural, por exemplo, inglês simples, para consultar o banco de dados.

Quando você usa o Select AI, o Autonomous AI Database gerencia o processo de conversão de linguagem natural em SQL. Isso significa que você pode fornecer um prompt de linguagem natural, em vez de código SQL, para interagir com seus dados. A Select AI serve como uma ferramenta de produtividade para usuários e desenvolvedores de SQL e permite que usuários SQL não especialistas obtenham insights úteis de seus dados, sem precisar entender estruturas de dados ou linguagens técnicas.

O pacote DBMS_CLOUD_AI no Autonomous AI Database permite a integração com um LLM especificado pelo usuário para gerar código SQL usando prompts de linguagem natural. O pacote ajuda a fornecer ao LLM conhecimento do esquema do banco de dados e a instruí-lo a gravar uma consulta SQL consistente com esse esquema. O pacote DBMS_CLOUD_AI funciona com provedores de IA como OpenAI, Cohere, Azure OpenAI Service e Oracle Cloud Infrastructure Generative AI.

Observação:

Os usuários devem ter uma conta com o provedor de IA e fornecer suas credenciais por meio de objetos DBMS_CLOUD_AI que o Autonomous AI Database usa.

Terminologia

É importante entender os vários termos usados com o Select AI antes de usá-lo.

Veja a seguir os termos relacionados ao recurso Selecionar AI:

Termo Definição

Credencial do Banco de Dados

Credenciais do Banco de Dados são credenciais de autenticação usadas para acessar e interagir com bancos de dados. Eles geralmente consistem em um nome de usuário e uma senha, às vezes complementados por fatores de autenticação adicionais, como tokens de segurança. Essas credenciais são usadas para estabelecer uma conexão segura entre um aplicativo ou usuário e um banco de dados, garantindo que apenas indivíduos ou sistemas autorizados possam acessar e manipular os dados armazenados no banco de dados.

Alucinação no LLM

Alucinação no contexto de Grandes Modelos de Linguagem refere-se a um fenômeno em que o modelo gera texto incorreto, sem sentido ou não relacionado ao prompt de entrada. Apesar de ser um resultado da tentativa do modelo de gerar texto coerente, essas instâncias podem conter informações fabricadas, enganosas ou puramente imaginativas. A alucinação pode ocorrer devido a vieses nos dados de treinamento, falta de compreensão do contexto adequado ou limitações no processo de treinamento do modelo.

Serviço IAM O Oracle Cloud IAM (Identity and Access Management) permite controlar quem tem acesso a seus recursos na nuvem. Você pode controlar que tipo de acesso um grupo de usuários tem e a quais recursos específicos. Para saber mais, consulte Visão Geral do Identity and Access Management.

Prompts de Linguagem Natural

Os Prompts de Linguagem Natural são instruções legíveis por humanos ou solicitações fornecidas para orientar modelos de IA generativa, como Grandes Modelos de Linguagem. Em vez de usar linguagens de programação ou comandos específicos, os usuários podem interagir com esses modelos inserindo prompts em um formulário de linguagem mais conversacional ou natural. Em seguida, os modelos geram a saída com base no prompt fornecido.

Lista de Controle de Acesso (ACL) à Rede

Uma Lista de Controle de Acesso à Rede é um conjunto de regras ou permissões que definem qual tráfego de rede pode passar por um dispositivo de rede, como um roteador, firewall ou gateway. As ACLs são usadas para controlar e filtrar o tráfego de entrada e saída com base em vários critérios, como endereços IP, números de porta e protocolos. Eles desempenham um papel crucial na segurança da rede permitindo que os administradores gerenciem e restrinjam o tráfego de rede para evitar acesso não autorizado, possíveis ataques e violações de dados.

Pesquisa de Similaridade

A pesquisa de similaridade identifica e recupera pontos de dados que correspondem de perto a uma determinada consulta, comparando vetores de recursos em um armazenamento de vetores.

Distâncias de vetores

As distâncias vetoriais medem a similaridade ou dissimilaridade entre vetores de características, calculando a distância entre eles em um espaço multidimensional.

Índice Vetorial

Um índice vetorial organiza e armazena vetores de recursos para permitir a pesquisa e a recuperação eficientes de similaridade de dados relacionados.

Loja de vetores

Um armazenamento de vetores inclui sistemas que armazenam, gerenciam e permitem a pesquisa de similaridade semântica envolvendo incorporações de vetores. Isso inclui bancos de dados vetoriais independentes e o Oracle Database 23ai AI Vector Search.

Diretrizes de Uso

Fornece diretrizes de uso que garantem o uso efetivo e adequado de prompts de linguagem natural para geração de SQL para garantir uma experiência de usuário aprimorada.

Uso pretendido

Esse recurso destina-se à geração e execução de consultas SQL resultantes de prompts de linguagem natural fornecidos pelo usuário. Ele automatiza o que um usuário pode fazer manualmente com base em seus metadados de esquema em combinação com um modelo de linguagem grande (LLM) de sua escolha.

Embora qualquer prompt possa ser fornecido, incluindo aqueles que não estão relacionados à produção de resultados de consulta SQL, Select AI se concentra na geração de consulta SQL. A opção Selecionar AI permite o envio de solicitações gerais com a ação chat.

Dados de Aumento de Prompt

O banco de dados aumenta o prompt especificado pelo usuário com metadados do banco de dados para mitigar alucinações do LLM. O prompt aumentado é enviado ao LLM especificado pelo usuário para produzir a consulta.

O banco de dados aumenta o prompt apenas com metadados de esquema. Esses metadados podem incluir definições de esquema, comentários de tabela e coluna e conteúdo disponível no dicionário de dados e no catálogo. Para fins de geração de SQL, o banco de dados não fornece conteúdo de tabela ou view (valores reais de linha ou coluna) ao aumentar o prompt.

A ação narrate, no entanto, fornece o resultado da consulta, que pode conter dados do banco de dados, ao LLM especificado pelo usuário a partir do qual gerar texto em linguagem natural descrevendo os resultados da consulta.

ADVERTÊNCIA:

Grandes modelos de linguagem (LLMs) foram treinados em um amplo conjunto de documentação e conteúdo de texto, geralmente da Internet. Como resultado, os LLMs podem ter incorporado padrões de conteúdo inválido ou malicioso, incluindo injeção de SQL. Assim, enquanto os LLMs são hábeis em gerar conteúdo útil e relevante, eles também podem gerar informações incorretas e falsas, incluindo consultas SQL que produzem resultados imprecisos e / ou comprometem a segurança de seus dados.

As consultas geradas em seu nome pelo provedor de LLM especificado pelo usuário serão executadas em seu banco de dados. Seu uso deste recurso é exclusivamente por sua conta e risco e, não obstante quaisquer outros termos e condições relacionados aos serviços fornecidos pela Oracle, constitui sua aceitação deste risco e expressa exclusão da responsabilidade ou responsabilidade da Oracle por quaisquer danos resultantes desse uso.

Selecione seu Provedor de IA e LLMs

Escolha um provedor de IA e um LLM que atenda aos seus padrões de segurança e se alinhe às suas necessidades específicas, como geração de texto ou código.

Diferentes LLMs se destacam em várias tarefas com base em seus dados de treinamento e propósito pretendido. Alguns modelos são excelentes para geração de texto, mas podem não ter um bom desempenho na geração de código, enquanto outros são especificamente otimizados para tarefas de codificação. Escolha um LLM que melhor se adapte às suas necessidades.

Provedor de IA LMs Modelo de Incorporação para RAG Objetivo

IA Generativa do OCI

  • meta.llama-3.3-70b-instruct (padrão)
  • meta.llama-3.2-90b-vision-instruct
  • meta.llama-3.2-11b-vision-instruct
  • meta.llama-3.1-70b-instruct
  • meta.llama-3.1-405b-instruct
  • cohere.command-r-08-2024
  • cohere.command-r-plus-08-2024
  • cohere.command-r-16k (obsoleto)
  • cohere.command–r-plus (obsoleto)
  • xai.grok-3
  • xai.grok-3-fast
  • xai.grok-3-mini
  • xai.grok-3-mini-rápido
  • cohere.embed-inglês-v3.0 (padrão)
  • cohere.embed-multilíngue-v3.0
  • cohere.embed-português-luz-v3.0
  • cohere.embed-luz multilíngue-v3.0

Consulte Sobre a Incorporação de Modelos no Serviço Generative AI.

Os modelos de Chat do OCI Generative AI são suportados para todas as ações SELECT AI, como runsql, showsql, explainsql, narrate e chat.

Os modelos de texto Gerar do OCI só são suportados para a ação SELECT AI chat.

Para configurar seus atributos de perfil, consulte .

Serviço Azure OpenAI

  • GPT-4o
  • GPT-4
  • Turbo GPT-4 com visão
  • GPT-3.5-Turbo

incorporação de texto-ada-002

Mais adequado para gerar SQL a partir de prompts de linguagem natural, ação chat e Select AI RAG.

OpenAI

  • gpt-3.5-turbo (padrão)
  • gpt-4o
  • gpt-4o-mini
  • gpt-4
  • gpt-4-0613
  • gpt-4-32k
  • gpt-4-32k-0613
  • gpt-3.5-turbo-0613
  • gpt-3.5-turbo-16k
  • gpt-3.5-turbo-16k-0613

incorporação de texto-ada-002

Mais adequado para gerar SQL a partir de prompts de linguagem natural, ação chat e Select AI RAG.

OpenAI-Compatível

Modelos de provedores compatíveis com OpenAI, como:
  • IA do Fireworks
  • xAI
  • Outros
Incorporação de modelos de provedores de combinação OpenAI. Por exemplo, consulte Modelos de incorporação de IA do Fireworks.

Suporta uma ampla gama de casos de uso.

Cohere

  • comando (padrão)
  • command-nightly (experimental)
  • comando-r
  • comando-r-plus
  • luz de comando
  • command-light-nightly (experimental)
  • modelos personalizados

inglês-v2.0

Mais adequado para a ação chat.

Google

  • gemini-1.5-flash (padrão)
  • gemini-1.5-pro
  • gemini-1.0-pro
text-embedding-004 (padrão)

Mais adequado para gerar SQL a partir de prompts de linguagem natural, ação chat e Select AI RAG.

Antrópico

  • claude-3-5-sonnet-20240620 (padrão)
  • claude-3-opus-20240229
  • claude-3-sonnet-20240229
  • claude-3-haiku-20240307
NA

Mais adequado para gerar SQL a partir de prompts de linguagem natural, ação chat e Select AI RAG.

Hugging Face

  • Mixtral-8x7B-Instruct-v0.1 (padrão)
  • Meta-Llama-3-70B-Instrução
  • Qwen1.5-1.8B
  • outros modelos de chat
NA

Mais adequado para gerar SQL a partir de prompts de linguagem natural, ação chat e Select AI RAG.

AWS

  • amazon.titan-embed-text-v1
  • amazon.titan-embed-text-v2:0
  • cohere.embed-português-v3

Suporta uma ampla gama de casos de uso.

Observação:

  • Especifique o provedor compatível com OpenAI por meio do parâmetro provider_endpoint em vez do parâmetro provider. Consulte aqui.

  • Para modelos que aceitam imagens, use meta.llama-3.2-90b-vision-instruct. Este modelo é especificamente treinado para visão e imagens. Embora possa ser usado para geração de texto e SQL, o modelo é mais adequado para imagens. Para saber mais, consulte Bate-papo na OCI Generative AI.

    O modelo meta.llama-3.2-11b-vision-instruct oferece recursos multimodais robustos.

  • Os modelos de incorporação também são conhecidos como modelos de transformadores.

Selecionar Conceitos de IA

Explora os conceitos e termos relacionados ao Select AI.

Sobre a Geração de SQL

Agora, é possível usar linguagem natural para interagir com seus dados de banco de dados com LLMs. Isso significa que você pode usar linguagem natural, por exemplo, inglês simples, para consultar o banco de dados.

Quando você usa o Select AI, o Autonomous AI Database gerencia o processo de conversão de linguagem natural em SQL. Isso significa que você pode fornecer um prompt de linguagem natural, em vez de código SQL, para interagir com seus dados. A Select AI serve como uma ferramenta de produtividade para usuários e desenvolvedores de SQL e permite que usuários SQL não especialistas obtenham insights úteis de seus dados, sem precisar entender estruturas de dados ou linguagens técnicas.

O pacote DBMS_CLOUD_AI no Autonomous AI Database permite a integração com um LLM especificado pelo usuário para gerar código SQL usando prompts de linguagem natural. O pacote ajuda a fornecer ao LLM conhecimento do esquema do banco de dados e a instruí-lo a gravar uma consulta SQL consistente com esse esquema. O pacote DBMS_CLOUD_AI funciona com provedores de IA como OpenAI, Cohere, Azure OpenAI Service e Oracle Cloud Infrastructure Generative AI.

Observação:

Os usuários devem ter uma conta com o provedor de IA e fornecer suas credenciais por meio de objetos DBMS_CLOUD_AI que o Autonomous AI Database usa.

Use DBMS_CLOUD_AI para Configurar Perfis do AI

O Autonomous AI Database usa perfis de IA para facilitar e configurar o acesso a um LLM e para configurar a geração de instruções SQL a partir de prompts de linguagem natural.

Os perfis de IA incluem objetos de banco de dados que são o destino para consultas de linguagem natural. Os metadados usados nesses destinos podem incluir nomes de tabelas de banco de dados, nomes de colunas, tipos de dados de coluna e comentários. Você cria e configura perfis do AI usando os procedimentos DBMS_CLOUD_AI.CREATE_PROFILE e DBMS_CLOUD_AI.SET_PROFILE.

Requisitos para Configurar o Pacote DBMS_CLOUD_AI

Para executar DBMS_CLOUD_AI, é necessário:

  • Acesso a uma conta na nuvem do Oracle Cloud Infrastructure e a uma instância do Autonomous AI Database.
  • Uma conta de API paga para um provedor de IA suportado, uma das seguintes:
    • OpenAI: Para permitir que OpenAI gere SQL de prompts de linguagem natural, obtenha chaves de API da sua conta paga OpenAI.

      Você pode encontrar sua chave de API secreta em suas Definições do usuário.

    • Cohere: para permitir que a Cohere gere SQL de prompts de linguagem natural, obtenha chaves de API da sua conta paga da Cohere.

      Clique em Painel de Controle e clique em Chave de API na navegação esquerda. Copie a chave de API padrão ou crie outra chave. Consulte API-Keys para obter mais informações.

    • Serviço OpenAI do Azure: Para ativar o Serviço OpenAI do Azure para gerar SQL com base em prompts de linguagem natural, configure e forneça acesso ao provedor de IA.

      Para usar o Azure OpenAI Service, execute as seguintes etapas:

      1. Obtenha suas chaves de API secretas. Você pode encontrar suas chaves de API na seção Resource Management do seu portal do Azure. Na página Recurso do Azure OpenAI Service, clique em Chaves e Ponto Final. Você pode copiar KEY1 ou KEY2.
      2. Crie um recurso do Azure OpenAI Service e implante um modelo: Crie e implante um recurso do Azure OpenAI Service.

        Dica:

        • Observe o nome do recurso e o nome da implantação, pois esses parâmetros são usados para fornecer permissão de acesso à rede e criar seu perfil do Azure OpenAI Service usando o procedimento DBMS_CLOUD_AI.CREATE_PROFILE.
        • Para saber mais sobre limites de taxa para token por minuto em um modelo, consulte Cotas e limites do Serviço OpenAI do Azure.
      3. Permitir acesso ao Serviço OpenAI do Azure:
        • Você pode usar sua chave de API secreta para permitir o acesso ao Azure OpenAI Service. Para saber mais, consulte o exemplo no .
    • OCI Generative AI: Consulte Como Gerar a Chave de Assinatura da API.
    • Google: Para permitir que o Google AI Studio gere respostas SQL e de texto aos prompts de linguagem natural, obtenha chaves de API da sua conta paga do Google AI Studio.
      1. Vá para Google AI Studio.
      2. Clique em Iniciar sessão no Google AI Studio.
      3. Clique em Obter chave de API na tela de prompt.
      4. Selecione todas as opções aplicáveis na próxima página.
      5. Clique em Create API key.
      6. Clique em Create API key in new project.

        A tela exibe o andamento e gera uma chave de API. Copie a chave e salve-a.

    • Antrópico: Para permitir que a Console do Desenvolvedor Antrópico gere respostas SQL e de texto aos prompts de linguagem natural, obtenha chaves de API da sua conta paga da Console do Desenvolvedor Antrópico.
      1. Vá para Console do Desenvolvedor Antrópico.
      2. Cadastre-se para uma conta se você ainda não tiver uma.
      3. Depois de fazer log-in, navegue até a seção API ou o painel de controle.
      4. Procure uma opção para gerar ou exibir chaves de API.
      5. Clique para criar uma nova chave de API.
      6. Copie a chave de API gerada e salve-a.

        A API Claude é um serviço pago. Você precisará adicionar créditos à sua conta para poder usar a chave de API.

    • Abraçando o Rosto: Para permitir que o Abraçando o Rosto como seu provedor de IA gere respostas de SQL e texto aos seus prompts de linguagem natural, obtenha chaves de API da sua conta paga do Abraçando o Rosto.
      1. Vá para Abraçando o Rosto.
      2. Cadastre-se para uma conta se você ainda não tiver uma.
      3. Navegue até as configurações da sua conta.
      4. No menu de navegação, localize os Tokens de Acesso.
      5. Clique para criar uma nova chave de API.
      6. Copie a chave de API gerada e salve-a.
    • AWS: Para ativar a AWS, obtenha a chave da API e o ID do modelo.

      Obtenha sua chave de API e use-a para criar credenciais por meio do DBMS_CLOUD.CREATE_CREDENTIAL.

      Siga este processo para obter a chave de API e o nome do modelo:

      1. Inscreva-se em uma conta da AWS se você ainda não tiver uma.
      2. Crie suas chaves de acesso e chaves secretas no Console do AWS Bedrock.
      3. Copie as chaves geradas e salve-as.
      4. Solicitar acesso aos seus modelos de base. Consulte Acessar modelos básicos do Amazon Bedrock.
      5. Obtenha o ID do modelo. Você precisa do ID do modelo no procedimento DBMS_CLOUD_AI.CREATE_PROFILE. O ID do Modelo depende dos recursos que você usa. Se você usar:

        Observação:

        O modelo importado não é suportado com a API de Conversas do Bedrock.

      Para usar a AWS como seu provedor, consulte Exemplo: Selecionar IA com a AWS.

  • Privilégios de ACL de rede para acessar seu provedor de IA externo.

    Observação:

    A ACL de rede não é aplicável ao OCI Generative AI.
  • Uma credencial que fornece acesso ao provedor de IA.

Configurar o Pacote DBMS_CLOUD_AI

Antes de usar Selecionar IA, aqui estão as etapas para ativar DBMS_CLOUD_AI.

Para configurar DBMS_CLOUD_AI:
  1. Conceda o privilégio EXECUTE no pacote DBMS_CLOUD_AI ao usuário que deseja usar o Select AI.

    Por padrão, somente o usuário ADMIN recebe o privilégio EXECUTE. O usuário ADMIN pode conceder o privilégio EXECUTE a outros usuários.

  2. Conceda acesso de ACL de rede ao usuário que deseja usar Select AI e para o ponto final do provedor de AI.

    O usuário ADMIN pode conceder acesso à ACL de rede. Consulte Procedimento APPEND_HOST_ACE em Oracle Database 19c PL/SQL Packages and Types Reference ou Oracle Database 26ai PL/SQL Packages and Types Reference para obter mais informações.

  3. Crie uma credencial para permitir o acesso ao seu provedor de IA.

    Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.

O exemplo a seguir concede o privilégio EXECUTE para ADB_USER:
grant execute on DBMS_CLOUD_AI to ADB_USER;

O exemplo a seguir concede a ADB_USER o privilégio para usar o ponto final api.openai.com.

BEGIN  
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
         host => 'api.openai.com',
         ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                             principal_name => 'ADB_USER',
                             principal_type => xs_acl.ptype_db)
   );
END;
/

APPEND_HOST_ACE Parâmetros de Função

Parâmetro Descrição

host

O host, que pode ser o nome ou o endereço IP do host. Você pode usar um curinga para especificar um domínio ou uma sub-rede IP. O nome do host ou do domínio não diferencia maiúsculas de minúsculas.

Para OpenAI, use api.openai.com.

Para a Cohere, use api.cohere.ai.

Para o Azure OpenAI Service, use <azure_resource_name>.openai.azure.com. Consulte Atributos de Perfil para saber mais sobre azure_resource_name.

Para o Google, use generativelanguage.googleapis.com.

Para Anthropic, use api.anthropic.com.

Para abraçar o rosto, use api-inference.huggingface.co.

ace

Entradas de controle de acesso (ACE). O tipo XS$ACE_TYPE é fornecido para construir cada entrada ACE para a ACL. Para obter mais detalhes, consulte Criando ACLs e ACEs no Oracle Database 19c Real Application Security Administrator's and Developer's Guide ou no Oracle Database 26ai Real Application Security Administrator's and Developer's Guide.

Veja um exemplo de como criar uma credencial para ativar o acesso a OpenAI.

EXEC DBMS_CLOUD.CREATE_CREDENTIAL('OPENAI_CRED', 'OPENAI', 'your_api_token');

Parâmetros DBMS_CLOUD.CREATE_CREDENTIAL

Parâmetro Descrição

credential_name

O nome da credencial a ser armazenada. O parâmetro credential_name deve estar em conformidade com as convenções de nomenclatura de objetos Oracle, que não permitem espaços nem hifens.

username

Os argumentos username e password juntos especificam suas credenciais de provedor de AI.

username é um nome de usuário especificado pelo usuário.

password

Os argumentos username e password juntos especificam suas credenciais de provedor de AI.

O password é sua chave de API secreta do provedor de IA e depende do provedor, ou seja, OpenAI, Cohere, Azure OpenAI Service, OCI, Google, Anthropic ou Hugging Face. Consulte Requisitos para Configurar o Pacote DBMS_CLOUD_AI para obter detalhes.

Criar e Definir um Perfil de IA

Descreve as etapas para criar e ativar um perfil do AI.

Use DBMS_CLOUD_AI.CREATE_PROFILE para criar um perfil do AI. Em seguida, inicie DBMS_CLOUD_AI.SET_PROFILE para ativar o perfil do AI para que você possa usar SELECT AI com um prompt de linguagem natural.

Observação:

Execute DBMS_CLOUD_AI.SET_PROFILE em cada nova sessão de banco de dados (conexão) antes de usar SELECT AI.

O exemplo a seguir com o provedor OpenAI cria um perfil AI chamado OPENAI e define o perfil OPENAI para a sessão do usuário atual.

-- Create AI profile
--
SQL> BEGIN
  DBMS_CLOUD_AI.create_profile(
      'OPENAI',
      '{"provider": "openai",
        "credential_name": "OPENAI_CRED",
        "object_list": [{"owner": "SH", "name": "customers"},
                        {"owner": "SH", "name": "sales"},
                        {"owner": "SH", "name": "products"},
                        {"owner": "SH", "name": "countries"}]
       }');
END;
/
 
PL/SQL procedure successfully completed.
 
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
 
PL/SQL procedure successfully completed.

Usar Palavra-chave AI para Inserir Prompts

Use AI como a palavra-chave em uma instrução SELECT para interagir com o banco de dados usando prompts de linguagem natural.

A palavra-chave AI em uma instrução SELECT instrui o mecanismo de execução SQL a usar o LLM identificado no perfil de IA ativo para processar linguagem natural e gerar SQL.

Você pode usar a palavra-chave AI em uma consulta com clientes Oracle, como SQL Developer, Notebooks OML e ferramentas de terceiros, para interagir com o banco de dados em linguagem natural.

Observação:

Não é possível executar instruções PL/SQL, instruções DDL ou instruções DML usando a palavra-chave AI.

Sintaxe

A sintaxe para executar o prompt AI é:
SELECT AI action natural_language_prompt

Parâmetros

A seguir estão os parâmetros disponíveis para o parâmetro action:
Parâmetro Descrição

runsql

Execute o comando SQL fornecido usando um prompt de linguagem natural. Essa é a ação padrão e é opcional especificar esse parâmetro.

showsql

Exibe a instrução SQL de um prompt de linguagem natural.

narrate

A saída do prompt é explicada em linguagem natural. Essa opção envia o resultado SQL ao provedor de IA para produzir um resumo de linguagem natural.

chat

Gera uma resposta diretamente do LLM com base no prompt. Se conversation na função DBMS_CLOUD_AI.CREATE_PROFILE estiver definido como true, essa opção incluirá conteúdo de interações ou prompts anteriores, incluindo potencialmente metadados de esquema.

explainsql

O SQL gerado a partir do prompt é explicado em linguagem natural. Essa opção envia o SQL gerado ao provedor de IA para produzir uma explicação de linguagem natural.

Observações sobre Uso

  • Selecione AI não suportado no Database Actions ou no APEX Service. Você só pode usar a função DBMS_CLOUD_AI.GENERATE.

  • A palavra-chave AI só é suportada em uma instrução SELECT.

  • Não é possível executar instruções PL/SQL, instruções DDL ou instruções DML usando a palavra-chave AI.

  • A sequência é SELECT seguido por AI. Essas palavras-chave não distinguem maiúsculas de minúsculas. Depois que um DBMS_CLOUD_AI.SET_PROFILE é configurado, o texto após SELECT AI é um prompt de idioma natural. Se um perfil do AI não estiver definido, SELECT AI reportará o seguinte erro:

    ORA-00923: FROM keyword not found where expected
    00923. 00000 -  "FROM keyword not found where expected"
  • Regras de uso de caracteres especiais se aplicam de acordo com as diretrizes da Oracle. Por exemplo, use aspas simples duas vezes se estiver usando um apóstrofo em uma frase.

    select ai how many customers in SF don''t own their own home
  • Os LLMs estão sujeitos a alucinações e os resultados nem sempre estão corretos:

    • É possível que SELECT AI não consiga executar o SQL gerado para um prompt de linguagem natural específico.

    • É possível que SELECT AI não consiga gerar SQL para um prompt de linguagem natural específico.

    Nesse cenário, SELECT AI responde com informações para ajudá-lo a gerar SQL válido.

  • Use a ação chat, com SELECT AI chat, para saber mais sobre construções SQL. Para obter melhores resultados com a ação chat, use views ou tabelas de banco de dados com nomes de colunas contextuais ou considere adicionar comentários de coluna explicando valores armazenados nas colunas.

  • Para acessar views DBA ou USER, consulte DBMS_CLOUD_AI Views.

Exemplo: Selecionar Ações do AI

Estes exemplos ilustram ações comuns do Select AI.

O exemplo a seguir ilustra ações como runsql (o padrão), showsql, narrate, chat, explainsql, feedback e summarize que você pode executar com SELECT AI. Esses exemplos usam o esquema sh com o provedor de IA e atributos de perfil especificados na função DBMS_CLOUD_AI.CREATE_PROFILE. Use as ações Selecionar AI após definir seu perfil AI usando o procedimento DBMS_CLOUD_AI.SET_PROFILE na sessão atual.

Para gerar um resumo do seu texto, use SELECT AI SUMMARIZE <TEXT>.

SQL> select ai how many customers exist;
 
CUSTOMER_COUNT
--------------
         55500
 
SQL> select ai showsql how many customers exist;
 
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
 
 
SQL> select ai narrate how many customers exist;
 
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
 
SQL> select ai chat how many customers exist;
 
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.


SQL> select ai explainsql how many customers in San Francisco are married;
 
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
 
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
  - 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
  - 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
 
Remember to adjust the table and column names based on your actual schema if they differ from the example.
 
Feel free to ask if you have more questions related to SQL or database in general.

-- Feedback on SQL Text
-- Negative feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", please use sum instead of count;
-- Positive feedback example:
SQL > select ai feedback for query "select ai showsql how many watch histories in total", the sql query generated is correct;
 
-- Feedback on SQL ID
-- Negative feedback example:
SQL > select ai feedback please use sum instead of count for sql_id  1v1z68ra6r9zf;
-- Positive feedback example:
SQL > select ai feedback sql query result is correct for sql_id  1v1z68ra6r9zf;
 
-- If not specified, use default LASTAI SQL
-- To use default LASTAI sql, make sure that set server output off;
-- Negative feedback example:
SQL > select ai feedback please use ascending sorting for ranking;
-- Positive feedback example:
SQL > select ai feedback the result is correct;

SQL> SELECT AI SUMMARIZE
Like countless other people around the globe, I stream music, and like more
than six hundred million of them I mainly use Spotify. Streaming currently
accounts for about eighty per cent of the American recording industry’s
revenue, and in recent years Spotify’s health is often consulted as a measure
for the health of the music business over all. Last spring, the International
Federation of the Phonographic Industry reported global revenues of $28.6
billion, making for the ninth straight year of growth. All of this was
unimaginable in the two-thousands, when the major record labels appeared
poorly equipped to deal with piracy and the so-called death of physical media.
On the consumer side, the story looks even rosier. Adjusted for inflation, a
 
... (skipped 1000 rows in the middle)
 
Pelly writes of some artists, in search of viral fame, who surreptitiously use
social media to effectively beta test melodies and motifs, basically putting
together songs via crowdsourcing. Artists have always fretted about the
pressure to conform, but the data-driven, music-as-content era feels
different. “You are a Spotify employee at that point,” Daniel Lopatin, who
makes abstract electronic music as Oneohtrix Point Never, told Pelly. “If your
art practice is so ingrained in the brutal reality that Spotify has outlined
for all of us, then what is the music that you’re not making? What does the
music you’re not making sound like?” Listeners might wonder something similar.
What does the music we’re not hearing sound like?;
 
 
RESPONSE
------------------------------------------------------------------------------
The music streaming industry, led by Spotify, has revolutionized the way
people consume music, with streaming accounting for 80% of the American
recording industry's revenue. However, this shift has also complicated the
lives of artists, who struggle to survive in a hyper-abundant present where
music is often valued for its convenience rather than its artistic merit.
Spotify's algorithms prioritize popularity and profitability over artistic
diversity, leading to a homogenization of music and a devaluation of the
labor that goes into creating it. Meanwhile, the company's executives reap
enormous profits, with CEO Daniel Ek's net worth rivaling that of the
wealthiest musicians. As music critic Liz Pelly argues, the streaming economy
raises important questions about autonomy, creativity, and the value of art
in a world where everything is readily available and easily accessible.

Exemplo: selecione AI com AWS

Este exemplo mostra como você pode usar a AWS para gerar, executar e explicar SQL a partir de prompts de linguagem natural ou chat usando os modelos disponíveis com a AWS.

O exemplo a seguir mostra como usar a AWS como provedor de IA com o Amazon Bedrock e seus modelos básicos. O exemplo mostra como criar credenciais da AWS, fornecer acesso à rede, criar um perfil de IA e usar ações Selecionar IA para gerar consultas SQL a partir de prompts de linguagem natural e chat usando os modelos básicos da AWS.

Para usar a AWS, obtenha chave de acesso, chaves secretas e ID do modelo. Consulte aqui. Use o ID do modelo como o atributo model no procedimento DBMS_CLOUD_AI.CREATE_PROFILE. Especifique o atributo model explicitamente, pois nenhum modelo padrão foi fornecido.

--Grant EXECUTE privilege to ADB_USER
GRANT EXECUTE on DBMS_CLOUD_AI to ADB_USER; 

--
-- Create Credential for AI provider
--
BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'AWS_CRED',
        username    => '<your_AWS_access_key>',
        password    => '<your_AWS_secret_key>'
      );
END;
/
 
PL/SQL procedure successfully completed.
 
 
--
-- Grant Network ACL for AWS
--
BEGIN
      DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => 'bedrock-runtime.us-east-1.amazonaws.com',
        ace  => xs$ace_type(privilege_list => xs$name_list('http'),
                    principal_name => 'ADB_USER',
                    principal_type => xs_acl.ptype_db)
       );
END;
/
 
PL/SQL procedure successfully completed.
 


--
-- Create AI profile 
--
BEGIN
      DBMS_CLOUD_AI.CREATE_PROFILE(
        profile_name =>'AWS',
        attributes   =>'{"provider": "aws",
          "credential_name": "AWS_CRED",
          "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
           "model" : "anthropic.claude-v2",
           "conversation" : "true"
          }');
END;
/
 
 
PL/SQL procedure successfully completed.


--
-- Enable AI profile in current session
--
EXEC DBMS_CLOUD_AI.SET_PROFILE('AWS');

PL/SQL procedure successfully completed.
 
--
-- Use AI
--

SELECT AI how many customers exist;
"RESPONSE"
"COUNT(*)"
55500


SELECT AI how many customers in San Francisco are married;
"RESPONSE"
"COUNT(*)"
46

SELECT AI showsql how many customers in San Francisco are married;
"RESPONSE"
"SELECT COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE UPPER(C."CUST_CITY") = UPPER('San Francisco')
AND UPPER(C."CUST_MARITAL_STATUS") = UPPER('Married')"

SELECT AI explainsql how many customers in San Francisco are married;

"RESPONSE""SELECT 
COUNT(*) AS "Number of Married Customers in San Francisco"
FROM "SH"."CUSTOMERS" C
WHERE C."CUST_CITY" = 'San Francisco'
AND C."CUST_MARITAL_STATUS" = 'Married'

Explanation:
- Used table alias C for CUSTOMERS table
- Used easy to read column names like CUST_CITY, CUST_MARITAL_STATUS
- Enclosed table name, schema name and column names in double quotes 
- Compared string values in WHERE clause without UPPER() since the values are not in double quotes
- Counted number of rows satisfying the condition and aliased the count as "Number of Married Customers in San Francisco""

SELECT AI narrate what are the top 3 customers in San Francisco;
"RESPONSE"
The top 3 customers in San Francisco ordered by credit limit in descending order are:

1. Bert Katz
2. Madallyn Ladd  
3. Henrietta Snodgrass

SELECT AI chat what is Autonomous AI Database;
"RESPONSE"
"An Autonomous AI Database is a cloud database service provided by Oracle Corporation. Some key features of Oracle Autonomous AI Database include:

- Fully automated and self-driving - The database automatically upgrades, patches, tunes, and backs itself up without any human intervention required.

- Self-securing - The database uses machine learning to detect threats and automatically apply security updates.

- Self-repairing - The database monitors itself and automatically recovers from failures and errors without downtime.

- Self-scaling - The database automatically scales compute and storage resources up and down as needed to meet workload demands. 

- Serverless - The database is accessed as a cloud service without having to manually provision any servers or infrastructure.

- High performance - The database uses Oracle's advanced automation and machine learning to continuously tune itself for high performance.

- Multiple workload support - Supports transaction processing, analytics, graph processing, etc in a single converged database.

- Fully managed - Oracle handles all the management and administration of the database. Users just load and access their data.

- Compatible - Supports common SQL and Oracle PL/SQL for easy migration from on-prem Oracle databases.

So in summary, an Oracle Autonomous AI Database is a fully automated, self-driving, self-securing, and self-repairing database provided as a simple cloud service. The automation provides high performance, elasticity, and availability with minimal human labor required."

--
--Clear the profile
--
BEGIN
   DBMS_CLOUD_AI.CLEAR_PROFILE;
END;
/
PL/SQL procedure successfully completed.

--
--Drop the profile
--
EXEC DBMS_CLOUD_AI.DROP_PROFILE('AWS');
 
PL/SQL procedure successfully completed.