Panoramica degli agenti di dati

Gli agenti di dati ti consentono di interagire con i dati nel database utilizzando il linguaggio conversazionale. Puoi creare agenti di dati definendo il contesto per un insieme di tabelle nel database, in modo che gli agenti di dati possano tradurre le domande in linguaggio naturale in query accurate per i tuoi casi d'uso target.

Il contesto è costituito da informazioni specifiche del database che consentono all'LLM di generare query con elevata precisione. Il contesto include modelli e sfaccettature che aiutano l'agente a comprendere lo schema del database e la logica di business delle applicazioni.

Sono supportati i seguenti database:

  • AlloyDB per PostgreSQL
  • Cloud SQL per MySQL
  • Cloud SQL per PostgreSQL
  • Spanner

Quando utilizzare gli agenti di dati

Puoi utilizzare gli agenti di dati per creare applicazioni di dati conversazionali ideali per casi d'uso come:

  • Automazione del servizio clienti: gestisci le richieste di alto volume come "Dov'è il mio ordine?" o "Qual è il mio saldo attuale?".
  • Assistenti per lo shopping e-commerce: aiuta gli utenti a navigare in cataloghi di prodotti di grandi dimensioni con query in linguaggio naturale come "Mostrami le scarpe da corsa sotto i 100 €".
  • Sistemi di prenotazione: consente agli utenti di verificare la disponibilità e prenotare appuntamenti, voli o servizi di ristorazione tramite interfacce di chat.
  • Strumenti per le operazioni sul campo: consente ai dipendenti in mobilità di eseguire query in tempo reale sui livelli di inventario , sulla disponibilità dei componenti o sui dettagli dei ticket di assistenza.

Come funzionano gli agenti di dati

Per creare applicazioni agentiche efficaci, l'agente deve comprendere l'organizzazione dei dati e la logica di business. Queste informazioni vengono fornite sotto forma di contesto dell'agente.

Definisci il contesto dell'agente nei file che contengono oggetti JSON per modelli e sfaccettature. Crea questi file di contesto con l'aiuto dell'interfaccia a riga di comando di Gemini. Carica quindi il file di contesto in un agente di dati creato nella Google Cloud console. Questo processo consente all'agente di apprendere lo schema specifico del database e la logica di business dell'applicazione.

Il file di contesto dell'agente è simile al seguente:

{
  "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"
      }
    }
  ],
  "facets": [
    {
      "sql_snippet": "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_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

Quando un utente finale pone una domanda in linguaggio naturale, l'agente dà la priorità alla corrispondenza della domanda con i modelli e le sfaccettature sottoposti a controllo da parte dello sviluppatore che cura il contesto. Una volta identificata una corrispondenza, l'agente utilizza il modello di query e le sfaccettature selezionati per sintetizzare una query di database. L'agente esegue quindi la query sul database per restituire risultati accurati.

L'endpoint QueryData nell'API Analisi conversazionale è uno strumento agentico che consente l'integrazione programmatica con le tue applicazioni per abilitare la generazione di query SQL da domande in linguaggio naturale. In un'applicazione conversazionale, l'endpoint QueryData deve essere utilizzato all'interno del framework che gestisce la cronologia e il contesto della conversazione.

Contesto dell'agente

Il contesto dell'agente è costituito da un insieme curato di modelli e sfaccettature in formato JSON che guidano l'agente nella traduzione di domande in linguaggio naturale in query per un database specifico. La definizione del contesto garantisce una generazione SQL di elevata precisione per i pattern di query comuni.

Per massimizzare la precisione, assicurati che il contesto dell'agente sia accurato ed esaustivo nella copertura delle query dell'applicazione previste.

Gli agenti e il contesto dell'agente possono essere creati nelle regioni us-central1, us-east1, europe-west4 e asia-southeast1.

Modelli di query

I modelli di query sono un insieme curato di domande rappresentative in linguaggio naturale con le query SQL corrispondenti. Includono anche spiegazioni per fornire una motivazione dichiarativa per la generazione da linguaggio naturale a SQL.

Un oggetto modello di query è simile al seguente:

{
  "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"
      }
    }
  ]
},
...

I componenti principali dell'oggetto JSON del modello di query sono i seguenti:

  • nl_query: un esempio di query in linguaggio naturale gestita dall'agente di dati.
  • sql: la query SQL per la query in linguaggio naturale.
  • intent: l'obiettivo o lo scopo della query in linguaggio naturale. Se non è impostato, questo valore viene impostato per impostazione predefinita sulla query in linguaggio naturale.
  • manifest: una forma generalizzata e generata automaticamente dell'intent.
  • parameterized_intent: una forma con modello e generata automaticamente dell'intento, con i valori delle entità sostituiti dai parametri.
  • parameterized_sql: una forma con modello e generata automaticamente della query SQL che corrisponde all'intent con parametri.

Sfaccettature delle query

Le sfaccettature delle query sono un insieme curato di condizioni rappresentative in linguaggio naturale con i predicati SQL corrispondenti. Le sfaccettature gestiscono i filtri e le condizioni, consentendo ai modelli di query di eseguire ricerche con sfaccettature.

Un oggetto sfaccettatura di query è simile al seguente:

{
...
"facets": [
    {
      "sql_snippet": "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_sql_snippet": "T.\"A11\" BETWEEN $1 AND $2"
      }
    }
  ]
}

I componenti principali dell'oggetto JSON della sfaccettatura sono i seguenti:

  • sql_snippet: uno snippet SQL.
  • intent: una spiegazione del predicato SQL.
  • manifest: una forma generalizzata e generata automaticamente dell'intent.
  • parameterized_intent: una forma con modello e generata automaticamente dell'intento, con i valori delle entità sostituiti dai parametri.
  • parameterized_sql_snippet: una forma con modello e generata automaticamente di sql_snippet che corrisponde all'intent con parametri.

Limitazioni

Gli agenti di dati presentano le seguenti limitazioni:

  • Il contesto dell'agente per i database supporta solo modelli e sfaccettature.
  • Il contesto dell'agente per i database viene utilizzato solo dall'endpoint QueryData nell'API Analisi conversazionale.

Passaggi successivi