Crea un agente de exploración de datos de IA con Gemini

Crea una interfaz de chat potenciada por la inteligencia artificial (IA) para las interfaces de programación de tu sistema empresarial y permite que tus colegas hagan preguntas sobre tus datos empresariales. Realizar análisis y generar informes sobre los datos de tu organización es fundamental para mejorar la forma en que haces negocios. Encontrar problemas, descubrir tendencias e investigar resultados es posible con los datos correctos, pero, como desarrollador, ayudar a tus colegas que no codifican a descubrir los datos correctos puede ser un desafío.

El proyecto SQL Talk es una aplicación de código abierto que usa tecnología de IA generativa para responder preguntas sobre datos empresariales. El proyecto usa la API de Gemini y la función Function Calling para transformar las preguntas de datos empresariales en consultas de SQL y llamadas a la API y, luego, volver a transformar los resultados en lenguaje sencillo. Puedes usar este proyecto como punto de partida para crear un agente de datos para tu propia empresa y ayudar a tus colegas a obtener respuestas sin tener que escribir un montón de código de un solo uso.

Si quieres ver una descripción general en video del proyecto y cómo ampliarlo, incluidas las estadísticas de las personas que lo compilan, consulta Agente de datos de IA | Compila con la IA de Google. De lo contrario, puedes comenzar a extender el proyecto con las siguientes instrucciones.

Interfaz de usuario de la aplicación del proyecto SQL Talk

Figura 1: Interfaz de usuario de la aplicación del proyecto SQL Talk.

Configura el proyecto

Estas instrucciones te guiarán para configurar el proyecto de SQL Talk para el desarrollo y las pruebas. Los pasos generales son crear el proyecto de SQL Talk, configurar un proyecto de desarrollo del editor de Google Cloud Shell, obtener un ID de proyecto de Google Cloud y usar una secuencia de comandos para configurar la configuración del proyecto. En estas instrucciones, se describe cómo configurar el proyecto con el editor de Cloud Shell, lo que hace que la configuración, la ejecución y la actualización del proyecto sean rápidas y convenientes.

Crea una instancia de Cloud Shell para el proyecto

Para configurar el proyecto de SQL Talk, clona el repositorio del proyecto en una instancia de Cloud Shell. Este proceso configura una instancia de entorno de desarrollo virtual dentro de la infraestructura de Google Cloud para el proyecto y clona el repositorio de código en ese entorno virtual.

Para crear una instancia de Cloud Shell para SQL Talk, sigue estos pasos:

Este vínculo configura una instancia del editor de Google Cloud Shell y clona el repositorio de SQL Talk en la instancia.

Editor de Google Cloud Shell con el código del proyecto de SQL Talk

Figura 2: Proyecto de SQL Talk clonado en un entorno de desarrollo del editor de Google Cloud Shell

Obtén un ID de proyecto de Cloud

El proyecto SQL Talk usa un ID de proyecto de Google Cloud para conectarse a los servicios de Google Cloud, incluidos los modelos de Gemini. Debes configurar un ID de proyecto en el editor de Cloud Shell para permitir que la aplicación se conecte con estos servicios.

Para conectar el editor de Cloud Shell a un ID de proyecto, haz lo siguiente:

  1. Navega a la consola de Google Cloud y accede, si es necesario.
  2. Selecciona un proyecto de Cloud existente o crea uno nuevo.
  3. Anota el ID del proyecto de Cloud.
  4. Conecta la instancia de Editor a tu proyecto y configúralo. En la ventana del editor de Cloud Shell, en el panel de la terminal, ingresa el siguiente comando:

    gcloud config set project YOUR_PROJECT_ID
    

Configura el proyecto de SQL Talk

El proyecto SQL Talk usa los servicios de Google Cloud para ejecutar el proyecto, incluido el servicio de base de datos de BigQuery y la API de Vertex AI para conectarse a modelos de Gemini. El proyecto SQL Talk incluye una secuencia de comandos setup.sh que configura el proyecto con los servicios de Google Cloud necesarios y, luego, inicia la versión predeterminada del proyecto.

Para configurar y ejecutar la instancia del editor de Cloud Shell del proyecto, haz lo siguiente:

  1. En el panel de la terminal de la ventana del Editor de Cloud Shell, navega al directorio del proyecto SQL Talk de Cloud Shell (/sql-talk-app):

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  2. En el panel de la terminal, ingresa el siguiente comando:

    bash setup.sh
    

Cuando la secuencia de comandos de configuración se complete correctamente, deberías ver un mensaje similar al siguiente en la ventana de la terminal del editor de Cloud Shell. Este mensaje indica que el proceso de configuración se realizó correctamente y que la aplicación de SQL Talk se está ejecutando:

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

Prueba el proyecto

Una vez que hayas completado la configuración del proyecto de SQL Talk, puedes probar la aplicación para verificar que funcione como se espera. La secuencia de comandos de configuración inicia automáticamente la aplicación cuando la ejecutas, y puedes reiniciarla siguiendo los pasos que se indican a continuación.

Para ejecutar la aplicación SQL Talk, sigue estos pasos:

  1. Si el editor de Cloud Shell estuvo inactivo y desconectado, es posible que debas volver a conectarte al ID de tu proyecto de Cloud.

    gcloud config set project YOUR_PROJECT_ID
    
  2. En el panel de la terminal de la ventana del Editor de Cloud Shell, navega al directorio del proyecto SQL Talk de Cloud Shell.

    cd ~/cloudshell_open/generative-ai/gemini/function-calling/sql-talk-app
    
  3. En el panel de la terminal, ingresa el siguiente comando.

    ~/miniforge/bin/streamlit run app.py --server.enableCORS=false \
        --server.enableXsrfProtection=false --server.port 8080
    
  4. Consulta la aplicación de SQL Talk. En la parte superior derecha de la ventana del editor de Cloud Shell, selecciona el botón Web Preview y, luego, Preview on port 8080.

Encabezado del editor de Cloud Shell con el botón Vista previa en la Web destacado

Para ver las actualizaciones de la aplicación de SQL Talk, haz lo siguiente:

  • En la vista previa en la Web de la aplicación web de SQL Talk, vuelve a cargar el navegador o la pestaña del navegador.

Para detener la aplicación de SQL Talk, haz lo siguiente:

  • En el panel de la terminal de la ventana del editor de Cloud Shell, escribe Ctrl + C.

Modifica la aplicación

Puedes cambiar el comportamiento y agregar capacidades a la aplicación SQL Talk si modificas el código de Python de la aplicación. En esta sección, se describe cómo agregar una nueva llamada a función a la aplicación de SQL Talk.

La función Llamada a función de la API de Gemini usa una sintaxis específica para definir las funciones que usará el modelo generativo para responder preguntas o resolver problemas. Esta sintaxis no necesita coincidir con precisión con la sintaxis de una llamada a la API real. En su lugar, usas la función de llamadas a función para forzar al modelo generativo a proporcionar entradas de datos o parámetros específicos que se ajusten a la sintaxis de la llamada a la API y, luego, usar esos parámetros para ejecutar las llamadas a la API reales dentro del código de tu aplicación.

En esta implementación de ejemplo, se muestra cómo crear una definición de llamada a función para enumerar consultas o trabajos recientes de la base de datos y, luego, asignar esa definición a la llamada a la API real dentro del código de la aplicación de SQL Talk.

Agrega una definición de llamada a función

Agrega una nueva llamada a función para mostrar una lista de las consultas o tareas recientes de la base de datos. El modelo generativo usa esta definición para comprender qué hace la llamada a la API y qué parámetros de entrada requiere. Esta definición de función de ejemplo se define sin parámetros.

Para agregar una nueva llamada a función a la aplicación, haz lo siguiente:

  1. En la ventana del Editor de Cloud Shell, abre el archivo de código sql-talk-app/app.py.
  2. Después de la declaración de la función list_datasets_func, agrega una nueva 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. Agrega la función nueva al objeto 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,
        ],
    )
    

Para agregar código que ejecute la llamada a la API de la función nueva, haz lo siguiente:

  • En el archivo de código sql-talk-app/app.py, agrega una nueva cláusula if al bucle 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])
    

Recursos adicionales

Para obtener más información sobre el proyecto de consulta de SQL, consulta el repositorio de código y la entrada de blog de la comunidad de Cloud sobre el proyecto SQL Talk. Si necesitas ayuda para compilar la aplicación o si quieres colaborar con otros desarrolladores, consulta el servidor de Discord de la comunidad de Google Developers y el Foro de IA/ML de Google Cloud. Para ver más proyectos de Build with Google AI, consulta la playlist de videos.