Creare un agente di esplorazione dei dati AI con Gemini

Crea un'interfaccia di chat basata sull'intelligenza artificiale (IA) per le tue interfacce di programmazione di sistemi aziendali e consenti ai tuoi colleghi di porre domande sui dati della tua attività. Eseguire analisi e report sui dati della tua organizzazione è essenziale per migliorare la tua attività. Trovare problemi, scoprire tendenze ed esaminare i risultati è possibile con i dati giusti, ma, in qualità di sviluppatore, aiutare i colleghi non programmatori a scoprire i dati giusti può essere complicato.

Il progetto SQL Talk è un'applicazione open source che utilizza la tecnologia di IA generativa per rispondere alle domande sui dati aziendali. Il progetto utilizza l'API Gemini e la funzionalità di chiamate di funzione per trasformare le domande sui dati aziendali in query SQL e chiamate API, quindi trasformare nuovamente i risultati in linguaggio semplice. Puoi utilizzare questo progetto come punto di partenza per creare un agente di dati per la tua attività e aiutare i tuoi colleghi a trovare le risposte senza dover scrivere un mucchio di codice monouso.

Per una panoramica video del progetto e su come estenderlo, inclusi approfondimenti da parte di chi lo sviluppa, consulta Agente dati di AI | Crea con Google AI. In caso contrario, puoi iniziare a estendere il progetto seguendo le istruzioni riportate di seguito.

Interfaccia utente dell'applicazione del progetto SQL Talk

Figura 1. Interfaccia utente dell'applicazione del progetto SQL Talk.

Configurazione del progetto

Queste istruzioni illustrano la procedura per configurare il progetto SQL Talk per lo sviluppo e i test. I passaggi generali sono la creazione del progetto SQL Talk, la configurazione di un progetto di sviluppo Google Cloud Shell Editor, l'ottenimento di un ID progetto Google Cloud e l'utilizzo di uno script per configurare le impostazioni del progetto. Queste istruzioni descrivono come configurare il progetto utilizzando l'editor di Cloud Shell, che semplifica e velocizza la configurazione, l'esecuzione e l'aggiornamento del progetto.

Crea un'istanza Cloud Shell per il progetto

Puoi configurare il progetto SQL Talk clonando il repository del progetto in un'istanza Cloud Shell. Questo processo configura un'istanza di ambiente di sviluppo virtuale all'interno dell'infrastruttura Google Cloud per il progetto e clona il repository di codice in questo ambiente virtuale.

Per creare un'istanza Cloud Shell per SQL Talk:

Questo link configura un'istanza di editor di Google Cloud Shell e clona il repository per SQL Talk nell'istanza.

Editor di Google Cloud Shell con il codice del progetto SQL Talk visualizzato

Figura 2. Progetto SQL Talk clonato in un ambiente di sviluppo Editor Google Cloud Shell.

Ottenere un ID progetto Cloud

Il progetto SQL Talk utilizza un ID progetto Google Cloud per connettersi ai servizi Google Cloud, inclusi i modelli Gemini. Configura un ID progetto nell'editor Cloud Shell per consentire all'applicazione di connettersi a questi servizi.

Per collegare l'editor di Cloud Shell a un ID progetto:

  1. Vai alla console Google Cloud e accedi, se necessario.
  2. Seleziona un progetto Cloud esistente o creane uno nuovo.
  3. Prendi nota dell'ID progetto Cloud per il progetto.
  4. Collega l'istanza di Editor al progetto e configura il progetto. Nella finestra dell'editor di Cloud Shell, inserisci il seguente comando nel riquadro del terminale:

    gcloud config set project YOUR_PROJECT_ID
    

Configura il progetto SQL Talk

Il progetto SQL Talk utilizza i servizi Google Cloud per l'esecuzione del progetto, tra cui il servizio di database BigQuery e l'API Vertex AI per connettersi ai modelli Gemini. Il progetto SQL Talk include uno script setup.sh che configura il progetto con i servizi Google Cloud richiesti e avvia la versione predefinita del progetto.

Per configurare ed eseguire l'istanza di Cloud Shell Editor del progetto:

  1. Nel riquadro del terminale della finestra dell'editor di Cloud Shell, vai alla directory del progetto Cloud SQL Talk (/sql-talk-app):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. Nel riquadro del terminale, inserisci il seguente comando:

    bash setup.sh
    

Al termine dello script di configurazione, dovresti visualizzare un messaggio simile al seguente nella finestra del terminale di Cloud Shell Editor. Questo messaggio indica che la procedura di configurazione è andata a buon fine e che l'applicazione SQL Talk è in esecuzione:

You can now view your Streamlit app in your browser.
Network URL: http://##.##.##.##:8080
External URL: http://##.##.##.##:8080

Testare il progetto

Una volta completata la configurazione del progetto SQL Talk, puoi testare l'applicazione per verificare che funzioni come previsto. Lo script di configurazione avvia automaticamente l'applicazione quando la esegui e puoi riavviare l'applicazione seguendo i passaggi riportati di seguito.

Per eseguire l'applicazione SQL Talk:

  1. Se l'editor di Cloud Shell è inattivo e disconnesso, potresti doverti ricollegare al tuo ID progetto Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. Nel riquadro del terminale della finestra dell'editor di Cloud Shell, vai alla directory del progetto Cloud SQL Talk.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. Nel riquadro del terminale, inserisci il seguente comando.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Visualizza l'applicazione SQL Talk. In alto a destra nella finestra dell'editor Cloud Shell, seleziona il pulsante Anteprima web, quindi Anteprima sulla porta 8080.

Intestazione dell'editor di Cloud Shell con il pulsante Anteprima web evidenziato

Per visualizzare gli aggiornamenti dell'applicazione SQL Talk:

  • Nell'anteprima web dell'applicazione web SQL Talk, ricarica il browser o la scheda del browser.

Per interrompere l'applicazione SQL Talk:

  • Nel riquadro del terminale della finestra dell'editor di Cloud Shell, digita Ctrl-C.

Modificare l'applicazione

Puoi modificare il comportamento e aggiungere funzionalità all'applicazione SQL Talk modificando il codice Python dell'applicazione. Questa sezione descrive come aggiungere una nuova chiamata di funzione all'applicazione SQL Talk.

La funzionalità Chiamata di funzione dell'API Gemini utilizza una sintassi specifica per definire le funzioni da utilizzare dal modello generativo per rispondere a domande o risolvere problemi. Questa sintassi non deve necessariamente corrispondere alla sintassi di una chiamata API effettiva. Utilizza invece la funzionalità di chiamata di funzioni per forzare il modello generativo a fornire input di dati o parametri specifici conformi alla sintassi delle chiamate API, quindi utilizza questi parametri per eseguire le chiamate API effettive all'interno del codice dell'applicazione.

Questa implementazione di esempio mostra come creare una definizione di chiamata di funzione per elencare le query o i job del database recenti e poi mappare questa definizione alla chiamata API effettiva all'interno del codice dell'applicazione SQL Talk.

Aggiungi una definizione di chiamata di funzione

Aggiungi una nuova chiamata di funzione per elencare le query o i job del database recenti. Questa definizione viene utilizzata dal modello generativo per capire cosa fa la chiamata API e quali parametri di input richiede. Questa definizione di funzione di esempio è definita senza parametri.

Per aggiungere una nuova chiamata di funzione all'applicazione:

  1. Nella finestra dell'editor di Cloud Shell, apri il file di codice sql-talk-app/app.py.
  2. Dopo la dichiarazione della funzione list_datasets_func, aggiungi un nuovo FunctionDeclaration.

    list_jobs_func = FunctionDeclaration(
        name="list_jobs",
        description="Get a list of the 10 most recent database requests to help answer the user's question",
        parameters={
            "type": "object",
            "properties": {
      },
    },
    )
    
  3. Aggiungi la nuova funzione all'oggetto sql_query_tool.

    sql_query_tool = Tool(
        function_declarations=[
            sql_query_func,
            list_datasets_func,
            List_jobs_func,  # add this new function
            list_tables_func,
            get_table_func,
        ],
    )
    

Per aggiungere il codice per eseguire la chiamata API per la nuova funzione:

  • Nel file di codice sql-talk-app/app.py, aggiungi una nuova clausola if al loop while function_calling_in_process:.

    if response.function_call.name == "list_datasets":
        ...
    
    # add this if clause for list_jobs function
    if response.function_call.name == "list_jobs":
        api_response = client.list_jobs(max_results=10)  # API request(s)
        api_response = str([job.job_id for job in api_response])
        api_requests_and_responses.append(
          [response.function_call.name,params, api_response])
    

Risorse aggiuntive

Per ulteriori informazioni sul progetto SQL Query, consulta il repository del codice e il post del blog della community Cloud sul progetto SQL Talk. Se hai bisogno di assistenza per creare l'applicazione o se stai cercando di collaborare con altri sviluppatori, dai un'occhiata al server Discord della community Google Developers e al forum IA/ML di Google Cloud. Per altri progetti di Creare con Google AI, consulta la playlist di video.