Visão geral dos agentes de dados

Com os agentes de dados, você pode interagir com as informações no seu banco de dados usando linguagem de conversação. É possível criar agentes de dados definindo o contexto para um conjunto de tabelas no banco de dados. Assim, eles podem traduzir perguntas em linguagem natural em consultas precisas para seus casos de uso.

O contexto são informações específicas do banco de dados que permitem que o LLM gere consultas com alta precisão. O contexto inclui modelos e aspectos (fragmentos) que ajudam o agente a entender o esquema do banco de dados e a lógica de negócios dos seus aplicativos.

Há suporte para os seguintes bancos de dados:

  • AlloyDB para PostgreSQL
  • Cloud SQL para MySQL
  • Cloud SQL para PostgreSQL
  • Spanner

Quando usar agentes de dados

Você pode usar os agentes de dados para criar aplicativos de dados de conversação ideais para casos de uso como:

  • Automação de atendimento ao cliente: lide com consultas de alto volume, como "Onde está meu pedido?" ou "Qual é meu saldo atual?".
  • Assistentes de compras de e-commerce: ajudam os usuários a navegar por grandes catálogos de produtos com consultas em linguagem natural, como "Mostre tênis de corrida com menos de R$ 100".
  • Sistemas de reservas: permitem que os usuários verifiquem a disponibilidade e agendem consultas, voos ou serviços de alimentação por interfaces de chat.
  • Ferramentas de operações de campo: permitem que os funcionários móveis consultem níveis de inventário, disponibilidade de peças ou detalhes de tíquetes de serviço em tempo real.

Como os agentes de dados funcionam

Para criar aplicativos de agente eficazes, o agente precisa entender a organização dos dados e a lógica de negócios. Essas informações são fornecidas na forma de contexto do agente.

Você define o contexto do agente em arquivos que contêm objetos JSON para modelos e aspectos. Você cria esses arquivos de contexto com a ajuda da CLI do Gemini. Em seguida, faça upload do arquivo de contexto para um agente de dados criado no console do Google Cloud. Esse processo permite que o agente aprenda o esquema específico do banco de dados e a lógica de negócios do aplicativo.

O arquivo de contexto do agente é semelhante a este:

{
  "templates": [
    {
      "nl_query": "Count prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ],
  "fragments": [
    {
      "fragment": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_fragment": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Quando um usuário final faz uma pergunta em linguagem natural, o agente prioriza a correspondência da pergunta aos modelos e aspectos auditados pelo desenvolvedor que seleciona o contexto. Depois que o agente identifica uma correspondência, ele usa o modelo de consulta e os atributos selecionados para sintetizar uma consulta de banco de dados. Em seguida, o agente executa essa consulta no banco de dados para retornar resultados precisos.

O endpoint QueryData na API Conversational Analytics é uma ferramenta de agente que permite a integração programática com seus aplicativos para ativar a geração de consulta SQL com base em perguntas em linguagem natural. Em um aplicativo de conversa, o endpoint QueryData precisa ser usado em uma estrutura que gerencia o histórico e o contexto da conversa.

Contexto do agente

O contexto do agente consiste em um conjunto selecionado de modelos e aspectos em formato JSON que orientam o agente na tradução de perguntas em linguagem natural para consultas em um banco de dados específico. Definir o contexto garante a geração de SQL de alta precisão para padrões de consulta comuns.

Verifique se o contexto do agente é preciso e abrangente na cobertura de consultas esperadas do aplicativo para maximizar a acurácia.

Modelos de consulta

Os modelos de consulta são um conjunto selecionado de perguntas representativas em linguagem natural com consultas SQL correspondentes. Elas também incluem explicações para fornecer uma lógica declarativa para a geração de linguagem natural para SQL.

Um objeto de modelo de consulta é semelhante a este:

{
  "templates": [
    {
      "nl_query": "Count prague loan accounts",
      "sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = \"Prague\"",
      "intent": "How many accounts associated with loans are located in the Prague region?",
      "manifest": "How many accounts associated with loans are located in a given city?",
      "parameterized": {
        "parameterized_intent": "How many accounts associated with loans are located in $1",
        "parameterized_sql": "SELECT COUNT(T1.account_id) FROM bird_dev_financial.account AS T1 INNER JOIN bird_dev_financial.loan AS T2 ON T1.account_id = T2.account_id INNER JOIN bird_dev_financial.district AS T3 ON T1.district_id = T3.district_id WHERE T3.\"A3\" = $1"
      }
    }
  ]
},
...

Os principais componentes do objeto JSON do modelo de consulta são:

  • nl_query: um exemplo de consulta em linguagem natural que o agente de dados processa.
  • sql: a consulta SQL para a consulta em linguagem natural.
  • intent: a meta ou o propósito da consulta em linguagem natural. Se não for definido, o valor padrão será a consulta em linguagem natural.
  • manifest: uma forma generalizada e gerada automaticamente da intent.
  • parameterized_intent: um formulário da intent com modelo e gerado automaticamente, com valores de entidade substituídos por parâmetros.
  • parameterized_sql: um formulário com modelo e gerado automaticamente da consulta SQL que corresponde à intenção parametrizada.

Refinamentos de consulta

Os aspectos da consulta são um conjunto selecionado de condições representativas de linguagem natural com predicados SQL correspondentes. Os atributos gerenciam a filtragem e as condições, o que permite que os modelos de consulta realizem pesquisas facetadas.

Um objeto de refinamento de consulta (fragmento) é semelhante a este:

{
...
"fragments": [
    {
      "fragment": "T.\"A11\" BETWEEN 6000 AND 10000",
      "intent": "Average salary between 6000 and 10000",
      "manifest": "Average salary between a given number and a given number",
      "parameterized": {
         "parameterized_intent": "Average salary between $1 and $2",
         "parameterized_fragment": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Os principais componentes do objeto JSON de fragmento são:

  • fragment: um predicado SQL.
  • intent: uma explicação do predicado SQL.
  • manifest: uma forma generalizada e gerada automaticamente da intent.
  • parameterized_intent: um formulário da intent com modelo e gerado automaticamente, com valores de entidade substituídos por parâmetros.
  • parameterized_fragment: uma forma de modelo gerada automaticamente do fragmento que corresponde à intent parametrizada.

Limitações

Os agentes de dados têm as seguintes limitações:

  • O contexto do agente para bancos de dados só é compatível com modelos e facetas.
  • O contexto do agente para bancos de dados é usado apenas pelo endpoint QueryData na API Conversational Analytics.

A seguir