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

Crea una interfaz de chat con tecnología de inteligencia artificial (IA) para las interfaces de programación del sistema empresarial y permite que tus colegas hagan preguntas sobre los datos de la empresa. El análisis y los informes sobre los datos de la organización es esencial para mejorar la forma en que haces negocios. Encontrar problemas, descubrir tendencias e investigar resultados son posibles con los datos correctos, pero, como desarrollador, ayudar a los colegas que no son de codificación a descubrir los datos correctos puede ser desafiante.

El proyecto SQL Talk es una aplicación de código abierto que usa la tecnología de IA generativa para responder preguntas sobre los datos de la empresa. En el proyecto, se usa la API de Gemini y la función de llamada de funciones para transformar las preguntas sobre los datos de la empresa en consultas de SQL y llamadas a la API y, luego, volver a convertir los resultados en un lenguaje simple. Puedes usar este proyecto como punto de partida a fin de crear un agente de datos para tu propia empresa y ayudar a tus colegas a obtener respuestas sin que tengas que escribir muchos códigos de uso único.

Para obtener una descripción general en video del proyecto y cómo extenderlo, incluidas las estadísticas de las personas que lo compilan, consulta Agente de datos de IA | Compilación 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.

Configuración del proyecto

Mediante estas instrucciones, se te guiará para que obtengas la configuración del 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 del proyecto de Google Cloud y usar una secuencia de comandos para ajustar 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 configurar, ejecutar y actualizar el proyecto sea rápido y conveniente.

Crea una instancia de Cloud Shell para el proyecto

Para configurar el proyecto 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.

Si deseas crear una instancia de Cloud Shell para SQL Talk, haz lo siguiente:

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

Editor de Google Cloud Shell en el que se muestra el código del proyecto de SQL Talk

Figura 2: Es el proyecto de SQL Talk clonado en un entorno de desarrollo del Editor de Google Cloud Shell.

Obtén un ID del proyecto de Cloud

El proyecto SQL Talk usa un ID del proyecto de Google Cloud para conectarse a los servicios de Google Cloud, incluidos los modelos de Gemini. Configura un ID del proyecto dentro del Editor de Cloud Shell para permitir que la aplicación se conecte con estos servicios.

Sigue estos pasos para conectar el editor de Cloud Shell a un ID del proyecto:

  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, ingresa el siguiente comando en el panel de la terminal:

    gcloud config set project YOUR_PROJECT_ID
    

Configura el proyecto SQL Talk

El proyecto SQL Talk usa 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 los modelos de Gemini. El proyecto SQL Talk incluye una secuencia de comandos setup.sh que configura el proyecto con los servicios de Google Cloud requeridos 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 terminal de la ventana del editor de Cloud Shell, navega al directorio del proyecto de SQL Talk (/sql-talk-app) de Cloud Shell:

    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 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 SQL Talk, puedes probar la aplicación para verificar que funcione según lo previsto. La secuencia de comandos de configuración inicia la aplicación automáticamente cuando la ejecutas y puedes reiniciarla mediante los siguientes pasos.

Para ejecutar la aplicación SQL Talk:

  1. Si el editor de Cloud Shell estuvo inactivo y desconectado, es posible que debas volver a conectarte al ID del 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 de Talk en SQL 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. Visualiza la aplicación SQL Talk. En la parte superior derecha de la ventana del Editor de Cloud Shell, selecciona el botón Vista previa en la Web y, luego, Vista previa en el puerto 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 SQL Talk:

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

Para detener la aplicación SQL Talk:

  • 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 para la aplicación. En esta sección, se describe cómo agregar una nueva llamada a función a la aplicación SQL Talk.

La función de llamada de funciones de la API de Gemini utiliza una sintaxis específica para definir las funciones que usará el modelo generativo a fin de responder preguntas o resolver problemas. Esta sintaxis no necesita coincidir de forma precisa con la sintaxis de una llamada a la API real. En su lugar, debes usar la función llamada a funciones para forzar al modelo generativo a que proporcione 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 la 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 base de datos y, luego, asignar esa definición a la llamada a la API real dentro del código de la aplicación SQL Talk.

Agregar una definición de llamada a función

Agregar una nueva llamada a función para mostrar los trabajos o las consultas recientes de la base de datos El modelo generativo usa esta definición para comprender lo que 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 SQL Query, 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 buscas colaborar con otros desarrolladores, consulta el servidor de Google Developers de Discord de la comunidad y el foro de IA/AA de Google Cloud. Para ver más proyectos de Build with Google IA, consulta la playlist de videos.