Diretrizes da Ferramenta SQL para Agentes de IA Generativa

Configure uma ferramenta SQL (Structured Query Language) em um agente para gerar instruções de consulta SQL a partir de consultas de linguagem natural e, opcionalmente, executar as consultas.

Somente consultas SQL SELECT, incluindo junção, várias condições e agregação, são geradas e executadas.

Adicionando uma ferramenta SQL a um agente, você pode consultar um banco de dados sem um conhecimento profundo de SQL e técnicas de otimização de consulta.

Para permitir que um revisor humano intervenha e edite uma consulta gerada antes de enviá-la ao usuário, selecione o recurso opcional Ativar humano no loop no ponto final do agente.

Este tópico descreve informações de suporte, tarefas de pré-requisito e diretrizes para adicionar e usar ferramentas SQL em Agentes de IA Generativa.

Bancos de Dados

A ferramenta SQL em Agentes de IA Generativa suporta o Oracle Database (Base Database e Autonomous Database).

Crie as tabelas e carregue dados no banco de dados de sua preferência. Se você estiver usando a ferramenta SQL para gerar instruções de consulta e, em seguida, corrigir automaticamente ou executar as consultas, deverá configurar uma conexão de ferramentas de banco de dados com o banco de dados que contenha dados para a consulta e a execução. Para obter ajuda com a criação de uma conexão, consulte Criar Conexão do Serviço Database Tools (Diretrizes).

Talvez você não precise criar tabelas no banco de dados se estiver usando apenas a ferramenta SQL para gerar instruções de consulta e não estiver permitindo que a ferramenta corrija ou execute consultas SQL automaticamente. No entanto, você ainda precisará fornecer o esquema da tabela de banco de dados ao criar a ferramenta SQL em um agente.

Esquema de Banco de Dados

Um esquema de banco de dados válido deve ser fornecido quando você adiciona uma ferramenta SQL a um agente nos Agentes de IA Generativa. A criação da ferramenta SQL falhará na etapa de validação se o esquema for inválido.

Um esquema válido é um blueprint de banco de dados bem estruturado que inclui o seguinte:

  • Tabelas: Defina entidades (por exemplo, Customers, Orders)

  • Colunas: Especifique atributos (por exemplo, CustomerID, OrderDate)

  • Chaves Primárias: Identifique linhas exclusivamente (por exemplo, CustomerID)

  • Chaves Estrangeiras: Tabelas de links (por exemplo, CustomerID em Orders faz referência a Customers).

  • Restrições: Imponha regras (por exemplo, NOT NULL, UNIQUE).

Exemplo de um esquema válido:

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    Name VARCHAR(100) NOT NULL,
    DepartmentID INT,
    HireDate DATE NOT NULL,
    FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);

Um esquema bem estruturado garante a integridade e a eficiência dos dados.

Exemplo de um esquema inválido:

CREATE TABLE Employees (
    EmployeeID,
    Name VARCHAR(100),
    DepartmentID INT,
    HireDate DATE
);

Um esquema inválido sem estrutura pode levar a possíveis inconsistências e ineficiências de dados. No exemplo, o esquema é inválido porque:

  • Estão faltando chaves primárias no esquema (EmployeeID, DepartmentID).
  • Um tipo de dados para EmployeeID está ausente.

Personalização do Modelo

Ao criar uma ferramenta SQL, você pode selecionar entre o uso de um modelo pequeno ou grande.

Um modelo pequeno fornece tempos de resposta mais rápidos. Você selecionaria um modo pequeno para consultas simples, como "Obter vendas totais para janeiro de 2025".

Um modelo grande fornece mais precisão, mas ao custo de maior latência. Você selecionaria um modelo grande para consultas mais complexas, como "Mostrar a média de vendas dos 5 produtos com melhor desempenho em Q1 2023 agrupados por região".

Dialeto do banco de dados

A ferramenta SQL suporta os dialetos Oracle SQL e SQLite.

Com base em seu dialeto preferido, o agente pode gerar consultas alinhadas com as regras sintáticas do Oracle SQL ou SQLite.

Exemplos de diferenças de sintaxe entre SQLite e Oracle SQL:

Oracle: SELECT * FROM users FETCH FIRST 5 ROWS ONLY;
SQLite: SELECT * FROM users LIMIT 5;

Oracle: SELECT 'Hello' || ' World' FROM dual;
SQLite: SELECT 'Hello' || ' World';

Requisitos de Rede e Segurança

Verifique se você tem os seguintes requisitos configurados se estiver ativando e usando a ferramenta SQL para executar as consultas SQL após gerar as instruções SQL:

  • Para que a regra de entrada seja configurada na sub-rede privada de um banco de dados, consulte Requisitos de Rede (sem suporte entre regiões e entre tenancies).

  • Um vault no OCI Vault é necessário para armazenar o segredo da senha do banco de dados. Crie o vault no mesmo compartimento do banco de dados.

  • Se o banco de dados autônomo estiver ativado para autenticação mTLS (Mutual TLS), você precisará fazer download da wallet e extrair um arquivo. Consulte Requisitos de Segurança de Wallet.

Conexão do Serviço Database Tools

Você pode ativar uma ferramenta SQL para corrigir automaticamente e executar uma consulta depois de gerar a instrução SQL. Quando a execução de SQL ou a autocorreção está ativada, é necessária uma conexão do serviço Database Tools com o banco de dados que contém dados para a consulta e a execução.

Para obter ajuda com a criação de uma conexão, consulte Criar Conexão do Serviço Database Tools (Diretrizes).

Armazenamento de Objetos para Entrada e Saída

Os buckets do Object Storage podem ser usados para conter arquivos de entrada para a ferramenta SQL. Se a execução de SQL estiver ativada em uma ferramenta SQL, os arquivos de saída da execução de consultas SQL poderão ser armazenados no Object Storage.

Entrada

Ao adicionar uma ferramenta SQL em um agente, você pode inserir manualmente detalhes ou selecionar um arquivo cujo upload foi feito para um bucket do Object Storage para fornecer a seguinte entrada:

  • Esquema de banco de dados
  • Exemplos de aprendizado no contexto
  • Descrição de tabelas e colunas

Para usar arquivos carregados no Object Storage como entrada, certifique-se de usar o formato e a extensão de arquivo apropriados para o tipo de entrada:

  • Para esquema de banco de dados: Crie o arquivo de esquema e salve-o com a extensão de arquivo .sql. Por exemplo: hrcreate.sql
  • Para exemplos de aprendizado no contexto: Adicione exemplos em um arquivo de texto usando a extensão de arquivo .txt. Por exemplo: hr-icl.txt
  • Para descrição de tabelas e colunas: Adicione descrições de tabelas e colunas em um arquivo de texto usando a extensão de arquivo .txt. Por exemplo: hr-describe.txt

Saída

Se a execução de SQL estiver ativada em uma ferramenta SQL, você também poderá ativar o ponto final do agente para armazenar o resultado de saída durante uma sessão de chat. Se você ativar o ponto final do agente para salvar os resultados da saída de execução de SQL, certifique-se de ter um bucket do Object Storage em seu compartimento preferencial. Você pode configurar uma regra de política de ciclo de vida nos objetos do bucket para especificar a ação a ser tomada (por exemplo, excluir ou arquivar) quando a idade dos objetos exceder um número especificado de dias. Você também pode usar filtros de nome de objeto para especificar a quais objetos a regra de ciclo de vida se aplica. Se precisar de ajuda para criar a regra de política e o filtro no serviço Object Storage, consulte Criando a Política de Ciclo de Vida de Objetos no Serviço Object Storage.

Para ativar o armazenamento de resultados de saída em um ponto final do agente e especificar um bucket a ser usado, consulte Criando um Ponto Final em Agentes do Serviço Generative AI.

Quando o armazenamento de resultados de saída está ativado, os Agentes do Generative AI armazenam a saída em um arquivo .csv no bucket do Object Storage especificado somente se houver mais de 100 linhas em um resultado durante a sessão de chat. Os Agentes de IA Generativa não armazenam o resultado de saída se houver menos de 100 linhas.

Políticas de IAM

Certifique-se de conceder aos usuários acesso a todos os recursos dos Agentes de IA Generativa, conforme descrito em Adicionando Políticas Antes de Usar o Serviço.

Revise também as seções a seguir e conclua as tarefas necessárias para usar uma função específica em um agente com uma ferramenta SQL (por exemplo, ative a execução SQL).

Armazenamento de Objetos

Ao configurar uma ferramenta SQL em um agente, você deve fornecer um esquema de banco de dados e, opcionalmente, exemplos de aprendizado contextual e descrição de tabelas e colunas.

Se você estiver usando arquivos de um bucket do Object Storage para fornecer a entrada, conceda permissão para ler objetos no Object Storage em um compartimento.

Allow any-user to inspect buckets in compartment <compartment-name> where all { target.bucket.name = '<bucket-name>', request.principal.type='genaiagent' }

Allow any-user to read objects in compartment <compartment-name> where all { target.bucket.name = '<bucket-name>', request.principal.type='genaiagent' } 

Execução de SQL, Autocorreção e Armazenamento de Saída

Se você ativar a ferramenta SQL para executar a consulta SQL em uma sessão de chat, deverá ter uma conexão do serviço Database Tools com o banco de dados que contém dados para a consulta e a execução. Para estabelecer conexão com o banco de dados, grave a política a seguir para conceder permissões apropriadas para acessar segredos do vault e o serviço Database Tools. A política também será necessária se você ativar a ferramenta SQL para executar a autocorreção em uma sessão de chat após validar uma instrução de consulta SQL.

Allow any-user to use database-tools-connections in compartment <compartment-name> where request.principal.type='genaiagent'

Allow any-user to read database-tools-family in compartment <compartment-name> where request.principal.type='genaiagent'

Allow any-user to read secret-family in compartment <compartment-name> where request.principal.type='genaiagent'

Se a execução de SQL estiver ativada em uma ferramenta SQL, você também poderá ativar o ponto final do agente para armazenar o resultado de saída durante uma sessão de chat se houver mais de 100 linhas no resultado. Se você ativar o resultado da saída, configure a seguinte política para conceder permissão:

Allow any-user to {BUCKET_INSPECT, BUCKET_READ, OBJECT_INSPECT, OBJECT_READ, OBJECT_CREATE, OBJECT_OVERWRITE, PAR_MANAGE} in compartment <compartment-name> where all { target.bucket.name = '<bucket-name>', request.principal.type='genaiagent' } 

Exemplos de Aprendizagem em Contexto (Opcional)

Você pode fornecer contexto sobre o esquema do banco de dados na forma de perguntas de exemplo que os usuários podem fazer e as consultas SQL esperadas como respostas de exemplo. Exemplos de aprendizado contextual são úteis para responder consultas de usuários semelhantes.

Exemplos:

Question: Show all employees who were born in CA.
Oracle SQL: SELECT * FROM Employees WHERE BIRTHSTATE = 'CA';

Question: Get the employeeid of employees who joined in 2020.
Oracle SQL: SELECT employeeID FROM Employees WHERE hireDate = '2020';

Instruções personalizadas (opcional)

Você pode fornecer um ou mais prompts para modificar o comportamento do agente.

Por exemplo:

Always use aggregators such as COUNT, SUM, AVG, MIN, and MAX in Oracle SQL queries that contain GROUP BY.
If the Oracle SQL query contains ORDER BY, then show the ORDER BY metric in the SELECT clause as well.
If all columns must be returned, use the (*) notation.
Ensure to include all relevant WHERE filtering conditions even when the number of conditions is larger than those of in-context learning examples.

Descrição de Tabelas e Colunas (Opcional)

A adição de descrições de tabelas e colunas pode melhorar a precisão da consulta, tratar a ambiguidade e ajudar o modelo a entender melhor consultas complexas e termos específicos. Por exemplo, descrever a coluna status em Orders como Order status: pending, shipped, or delivered ajuda o modelo a interpretá-la corretamente nas consultas do usuário.

Por exemplo:

Description of the important tables in the schema:

Employees         Employee names and other information
Departments       Department names and other information 

Description of the important columns of the tables in the schema:

EMPLOYEES TABLE

employees.employeeID     A unique code assigned to each employee. employeeID links the data in this file with records in the other files.
employees.departmentID   A unique code that identifies the department an employee belongs to
employees.birthYear      Year employee was born
employees.birthMonth     Month employee was born
employees.birthState     State where employee was born
employees.birthCity      City where employee was born
employees.nameFirst      Employee's first name
employees.nameLast       Employee's last name
employees.nameMiddle     Employee's middle name
employees.hireDate       Year employee joined the company

---------------------------------------------------------------------
DEPARTMENTS TABLE

department.departmentID    A unique code assigned to each department
department.departmentName  Name of the department
department.locationID      Unique code that identifies the location of a department
department.managerID       Unique code that identifies the department's manager