Utilização de SELECT AI para Gerar SQL com base em Prompts de Linguagem Natural
O recurso Selecionar IA permite que o Autonomous Database use IA generativa com LLMs (Large Language Models) 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.
Tópicos Relacionados
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. |
Modelo de Linguagem Grande (LLM) |
Os Grandes Modelos de Linguagem referem-se a modelos avançados de inteligência artificial que são treinados em grandes quantidades de dados de texto para entender e gerar consultas de linguagem, código de software e banco de dados semelhantes a humanos. Esses modelos são capazes de executar uma ampla gama de tarefas de processamento de linguagem natural, incluindo geração de texto, tradução, resumo, resposta a perguntas, análise de sentimentos e muito mais. Os LLMs são tipicamente arquiteturas baseadas em rede neural que aprendem padrões, contexto e semântica a partir dos dados de entrada, permitindo que eles gerem texto coerente e contextualmente relevante. |
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. |
Exemplos de Uso do Select AI
Explore a integração do Select AI da Oracle com vários provedores de IA, como OpenAI, Cohere, Azure Open AI e OCI Generative AI, para gerar consultas SQL diretamente de linguagem natural.
Esses exemplos mostram ações comuns do Select AI e orientam você na configuração do seu perfil com diferentes provedores de IA para aproveitar essas ações.
Exemplo: Selecionar Ações do AI
O exemplo a seguir ilustra ações como runsql
, showsql
, narrate
, chat
e explainsql
que você pode executar com SELECT AI
. Esses exemplos usam o esquema sh
com o provedor de IA e atributos de perfil definidos na função DBMS_CLOUD_AI.CREATE_PROFILE
.
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.
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.
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 Selecionar IA, o Autonomous 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 de SQL não especialistas obtenham insights úteis de seus dados, sem precisar entender estruturas de dados ou linguagens técnicas.
DBMS_CLOUD_AI
no Autonomous 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 instrui-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 objetosDBMS_CLOUD_AI
que o Autonomous Database usa.
Use DBMS_CLOUD_AI para Configurar Perfis do AI
O Autonomous 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 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:
- 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.
- 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.
- 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
- 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 em Exemplos de Uso do Select AI.
- 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.
- Vá para Google AI Studio.
- Clique em Iniciar sessão no Google AI Studio.
- Clique em Obter chave de API na tela de prompt.
- Selecione todas as opções aplicáveis na próxima página.
- Clique em Create API key.
-
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.
- Vá para Console do Desenvolvedor Antrópico.
- Cadastre-se para uma conta se você ainda não tiver uma.
- Depois de fazer log-in, navegue até a seção API ou o painel de controle.
- Procure uma opção para gerar ou exibir chaves de API.
- Clique para criar uma nova chave de API.
-
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.
- Vá para Abraçando o Rosto.
- Cadastre-se para uma conta se você ainda não tiver uma.
- Navegue até as configurações da sua conta.
- No menu de navegação, localize os Tokens de Acesso.
- Clique para criar uma nova chave de API.
- Copie a chave de API gerada e salve-a.
-
- 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
.
DBMS_CLOUD_AI
:
-
Conceda o privilégio
EXECUTE
no pacoteDBMS_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égioEXECUTE
a outros usuários. -
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 APPEND_HOST_ACE Procedure em Oracle Database 19c PL/SQL Packages and Types Reference ou Oracle Database 23ai PL/SQL Packages and Types Reference para obter mais informações.
- Crie uma credencial para permitir o acesso ao seu provedor de IA.
Consulte Procedimento CREATE_CREDENTIAL para obter mais informações.
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 |
---|---|
|
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 Para o Google, use generativelanguage.googleapis.com. Para Anthropic, use api.anthropic.com. Para abraçar o rosto, use api-inference.huggingface.co. |
|
As entradas de controle de acesso (ACE). O tipo |
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 |
---|---|
|
O nome da credencial a ser armazenada. O parâmetro |
|
Os argumentos
|
|
Os argumentos O |
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-chaveAI
.
Sintaxe
SELECT AI action natural_language_prompt
Parâmetros
Parâmetro | Descrição |
---|---|
|
Execute o comando SQL fornecido usando um prompt de linguagem natural. Essa é a ação padrão e é opcional especificar esse parâmetro. |
|
Exibe a instrução SQL de um prompt de linguagem natural. |
|
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. |
|
Gera uma resposta diretamente do LLM com base no prompt. Se |
|
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çãoDBMS_CLOUD_AI.GENERATE
. -
A palavra-chave
AI
só é suportada em uma instruçãoSELECT
. -
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 porAI
. Essas palavras-chave não distinguem maiúsculas de minúsculas. Depois que umDBMS_CLOUD_AI.SET_PROFILE
é configurado, o texto apósSELECT 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
, comSELECT AI chat
, para saber mais sobre construções SQL. Para obter melhores resultados com a açãochat
, 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.