Cómo usar CHATGPT (api) sobre la base de datos de tu Empresa [Y te regalo la APP]

00:17:12
https://www.youtube.com/watch?v=yz1CaFMTevk

Summary

TLDREl video trata sobre cómo construir una aplicación prototipo que utiliza inteligencia artificial para que usuarios de negocio puedan realizar sus propios análisis de datos sin necesidad de depender de un Data Scientist. Se explica que gran parte del trabajo de un Data Scientist hoy en día se consume haciendo análisis ad hoc para diferentes departamentos de una empresa. Para solucionar esto, se propone crear una aplicación que usa la API de ChatGPT para traducir consultas en lenguaje natural a consultas SQL, las cuales se ejecutan sobre una base de datos SQLite, mostrando los resultados a través de una interfaz diseñada con Streamlit. La arquitectura de la app incluye un backend en Python que se conecta a la API de OpenAI para procesar las consultas y generar los resultados necesarios. Las consultas son generadas con un bajo nivel de creatividad para mantenerlas precisas. El video también toca cuestiones de cumplimiento legal al utilizar la API de OpenAI y muestra cómo construir la aplicación paso a paso, desde la conexión a la base de datos, pasando por el desarrollo del backend y terminando con la creación de la interfaz de usuario. Finalmente, se realizan pruebas con la aplicación para demostrar su funcionalidad y se invita a los espectadores a descargar el código y replicar el ejemplo por su cuenta.

Takeaways

  • 🤖 La app permite a usuarios de negocio realizar análisis de datos sin depender de expertos.
  • 🔧 Utiliza la API de ChatGPT para procesar consultas en lenguaje natural.
  • 💻 La interfaz se desarrolla con Streamlit para facilitar su uso.
  • 🗄️ Usa SQLite como ejemplo de base de datos para las consultas SQL.
  • 📈 La app automatiza tareas repetitivas de los analistas de datos.
  • 🚀 Facilita que usuarios no técnicos realicen análisis avanzados.
  • 🛡️ Es crucial considerar la legalidad al enviar datos a OpenAI.
  • 🔄 La cadena de procesos en Langchain ayuda a transformar consultas.
  • ⚙️ Se emplean clases específicas para cargar y manejar la base de datos.
  • 🔍 Se destaca la importancia de prompts bien definidos para obtener mejores resultados.

Timeline

  • 00:00:00 - 00:05:00

    Se presenta la idea de crear una aplicación de inteligencia artificial para permitir a los usuarios de negocio realizar sus propios análisis sin necesidad de un data scientist. Se conecta la API de ChatGPT a una base de datos empresarial y se crea una interfaz con Streamlit para facilitar esta interacción. Esto busca liberar al equipo de data science de tareas ad hoc, permitiéndoles enfocarse en proyectos más innovadores.

  • 00:05:00 - 00:10:00

    Explica la arquitectura y los componentes de la aplicación, incluyendo la base de datos SQLite, la API de ChatGPT y la interfaz de usuario con Streamlit. Se describe cómo el backend en Python toma las solicitudes de los usuarios en lenguaje natural, las envía a la API de ChatGPT para convertirlas en consultas SQL, y devuelve los resultados al usuario a través de la interfaz.

  • 00:10:00 - 00:17:12

    Se detallan los últimos pasos del proceso: la implementación de código para realizar consultas SQL automatizadas mediante el backend y la interfaz de usuario creada en Streamlit. Se realizan ejemplos de uso, mostrando cómo los usuarios pueden realizar consultas complejas sin saber SQL, y se resalta cómo esta aplicación permite liberar a los analistas de tareas repetitivas, mostrando su eficacia con ejemplos prácticos.

Mind Map

Mind Map

Frequently Asked Question

  • ¿Qué hace la aplicación que se explicó en el video?

    La aplicación permite a los usuarios de negocio realizar análisis de datos en lenguaje natural sin conocimiento técnico.

  • ¿Qué herramientas utiliza la aplicación para su desarrollo?

    La aplicación utiliza Streamlit para la interfaz y ChatGPT API para el procesamiento de lenguaje natural.

  • ¿Cómo se aseguran de que el procesamiento de datos sea correcto?

    Se utiliza la API de ChatGPT para convertir consultas en lenguaje natural a código SQL que luego se ejecuta en una base de datos para proporcionar resultados.

  • ¿Qué base de datos se usa como ejemplo?

    Se usa SQLite como ejemplo de base de datos relacional en el video.

  • ¿Qué precauciones legales se deben tomar al usar la API de OpenAI para análisis de datos?

    Es necesario asegurarse de cumplir con las políticas de la empresa para el manejo de datos al enviar información a los servidores de OpenAI.

  • ¿El usuario necesita tener conocimientos de SQL para usar la app?

    No, el usuario puede realizar consultas en lenguaje natural sin necesidad de saber SQL.

  • ¿Por qué es importante definir bien el prompt en el uso del modelo de lenguaje?

    Definir bien el prompt ayuda a que el modelo devuelva respuestas más precisas y relevantes.

  • ¿Qué modelo de ChatGPT se utiliza en el video y por qué?

    Se utiliza ChatGPT 3.5 Turbo por ser más económico que la versión 4.

  • ¿Cuál es el propósito principal de la app desarrollada?

    Liberar a los Data Scientists de tareas repetitivas de análisis ad hoc, permitiendo a usuarios de negocio hacer análisis por sí mismos.

  • ¿Qué se necesita tener configurado para que la app funcione correctamente?

    Se necesita tener la base de datos y las credenciales del API configuradas correctamente para el correcto funcionamiento de la app.

View more video summaries

Get instant access to free YouTube video summaries powered by AI!
Subtitles
es
Auto Scroll:
  • 00:00:00
    cuando uno empieza a trabajar como Data
  • 00:00:01
    scientist piensa que va a estar todo el
  • 00:00:03
    tiempo entrenando modelos y creando
  • 00:00:04
    algoritmos pero lamentablemente Esa no
  • 00:00:06
    es la realidad rápidamente te vas a dar
  • 00:00:08
    cuenta de que vas a pasar gran parte de
  • 00:00:10
    tu tiempo haciendo análisis addock para
  • 00:00:12
    tu jefe para los product managers para
  • 00:00:13
    el de publicidad Así que vamos a acabar
  • 00:00:15
    con eso y vamos a intentar devolverte tu
  • 00:00:17
    tiempo para que puedas centrarte en
  • 00:00:19
    cosas realmente rompedoras por eso en
  • 00:00:21
    este vídeo vamos a crear un prototipo de
  • 00:00:22
    una aplicación de Inteligencia
  • 00:00:23
    artificial que permite a los usuarios de
  • 00:00:25
    negocio hacer sus propios análisis sin
  • 00:00:27
    depender de ti y lo haremos conectando
  • 00:00:28
    directamente la Api de chat gpt a la
  • 00:00:30
    base de datos de la empresa y creando
  • 00:00:32
    una interfaz de streamlit para que la
  • 00:00:34
    puede utilizar directamente el usuario
  • 00:00:35
    de negocio
  • 00:00:35
    [Música]
  • 00:00:37
    Bueno pues antes de pasar al código
  • 00:00:39
    vamos a ver la arquitectura de cómo
  • 00:00:41
    funciona este sistema como habíamos
  • 00:00:43
    dicho vamos a crear una app que va a
  • 00:00:44
    tener una interfaz muy sencilla al
  • 00:00:46
    estilo de chat donde únicamente va a
  • 00:00:48
    haber una cajita donde el usuario va a
  • 00:00:49
    introducir el lenguaje natural que
  • 00:00:51
    análisis es el que quiere realizar esta
  • 00:00:53
    interfaz la vamos a hacer en Stream lead
  • 00:00:55
    y va a conectar directamente con el
  • 00:00:57
    backend que va a ser un código de python
  • 00:00:59
    y que lo que va a hacer es básicamente
  • 00:01:01
    la pregunta del usuario y
  • 00:01:03
    pasársela a la Api de chat gpt de Open
  • 00:01:07
    ahí conectar con los servidores de Open
  • 00:01:08
    ahí pasándole un pronto muy concreto que
  • 00:01:11
    vas a ver cuál es el que vamos a
  • 00:01:12
    utilizar y esto lo que va a devolver es
  • 00:01:14
    el código de sql necesario para conectar
  • 00:01:17
    con una base de datos y hacer el
  • 00:01:19
    análisis que ha sido el que ha pedido el
  • 00:01:20
    usuario en este caso vamos a utilizar
  • 00:01:22
    una base de datos relacional Aunque muy
  • 00:01:24
    sencillita como es ese culite pero que
  • 00:01:26
    en el fondo es una base de datos del
  • 00:01:27
    estilo de la que tienen las empresas
  • 00:01:28
    como podría ser pues un sql Server un
  • 00:01:30
    Oracle etcétera etcétera la base de
  • 00:01:32
    datos nos va a devolver el resultado y
  • 00:01:33
    ese resultado se lo vamos a mostrar al
  • 00:01:35
    usuario también a través de nuestra
  • 00:01:37
    aplicación de streaming de esta manera
  • 00:01:38
    lo que estamos construyendo es un
  • 00:01:40
    sistema que a diferencia de otros
  • 00:01:41
    sistemas debe ir orientados al usuario
  • 00:01:42
    como podría ser tablón o Power Bay no
  • 00:01:44
    necesita absolutamente nada de
  • 00:01:46
    conocimiento técnico porque el usuario
  • 00:01:47
    únicamente va a tener que hacer una
  • 00:01:49
    petición en lenguaje completamente
  • 00:01:50
    natural de lo que quiere obtener y va a
  • 00:01:53
    ser todo nuestra aplicación la que le
  • 00:01:55
    devuelva esos resultados por último como
  • 00:01:56
    disclaimer legal Recuerda que cuando
  • 00:01:58
    conectas a lápiz de chat gpt enviando
  • 00:02:00
    tus datos a los servidores de Open ahí
  • 00:02:02
    Así que ten mucho cuidado si vas a hacer
  • 00:02:03
    eso con los datos reales y asegúrate de
  • 00:02:06
    cumplir todas las políticas de tu
  • 00:02:07
    empresa al final es tu responsabilidad
  • 00:02:08
    Este vídeo es solo a propósito educativo
  • 00:02:10
    y no implica ninguna recomendación de
  • 00:02:12
    uso vamos a ver ahora Cuál es nuestra
  • 00:02:13
    base de datos en este caso estamos
  • 00:02:15
    trabajando para una empresa de ecommerce
  • 00:02:17
    la base de datos es muy sencilla he
  • 00:02:19
    querido hacerlo así para no complicar en
  • 00:02:20
    exceso el ejercicio por lo tanto
  • 00:02:21
    únicamente vamos a tener una tabla que
  • 00:02:23
    es la tabla de ventas y esta tabla de
  • 00:02:25
    ventas pues va a tener las siguientes
  • 00:02:26
    columnas el identificador de la factura
  • 00:02:28
    el identificador del producto que se ha
  • 00:02:29
    vendido el nombre del producto la
  • 00:02:31
    cantidad de unidades que se han comprado
  • 00:02:32
    la fecha de la factura el precio
  • 00:02:34
    unitario de cada uno de sus productos el
  • 00:02:36
    identificador del cliente que ha
  • 00:02:37
    comprado el país del cliente y el total
  • 00:02:39
    de las ventas ventas totales que esto es
  • 00:02:42
    el resultado de multiplicar la cantidad
  • 00:02:43
    de productos vendidos por el precio
  • 00:02:45
    unitario es decir es el importe total en
  • 00:02:47
    cada una de esas ventas y aquí tenemos
  • 00:02:50
    el ejemplo de unos cuantos datos ves que
  • 00:02:52
    son 541.000 casi 542.000 registros o sea
  • 00:02:55
    que es una base de datos importante para
  • 00:02:57
    hacer unas pruebas porque sean realistas
  • 00:02:59
    y como pues esto es la tabla que tenemos
  • 00:03:01
    Vale y vamos a ver ya pues cómo está
  • 00:03:03
    construida nuestra aplicación en este
  • 00:03:04
    caso como ves he utilizado visual Studio
  • 00:03:07
    para construir esta aplicación los
  • 00:03:09
    componentes que tiene es por un lado la
  • 00:03:11
    propia base de datos Recuerda que es una
  • 00:03:13
    base de datos sqlite después tienes este
  • 00:03:15
    Powerpoint pero que esto es el diagrama
  • 00:03:17
    de arquitectura que te enseñé antes
  • 00:03:19
    decir no es necesario realmente para
  • 00:03:20
    esta aplicación y después tenemos tres
  • 00:03:23
    scripts el primer scripts que es el que
  • 00:03:25
    se llama en Bars Aquí es donde yo he
  • 00:03:27
    guardado mi Api de Open ahí voy a
  • 00:03:29
    abrirlo en este caso pues simplemente
  • 00:03:30
    con un notepad para decir dónde tienes
  • 00:03:32
    que meterlo pues una vez que tengas tu
  • 00:03:34
    Api de Open hay simplemente la pegas
  • 00:03:35
    aquí guardas y ya estarías y luego
  • 00:03:37
    tenemos el que se llama backenz que es
  • 00:03:40
    lo que va a hacer toda la parte del
  • 00:03:41
    Código de la consulta del usuario
  • 00:03:44
    y esa consulta trasladársela a Open ahí
  • 00:03:47
    a la Api de chat gpt y tenemos el Script
  • 00:03:49
    del frontend que esto es la parte de la
  • 00:03:51
    interfaz que vamos a generar con Stream
  • 00:03:54
    lead luego a partir de ahí vamos al
  • 00:03:56
    siguiente Script que es el del backen y
  • 00:03:57
    básicamente lo que tenemos que hacer
  • 00:03:58
    aquí Son seis grandes pasos primero
  • 00:04:00
    vamos a cargar la base de datos sql y
  • 00:04:02
    vamos a utilizar para ello una clase del
  • 00:04:04
    propio lanchain que ya nos permite poder
  • 00:04:06
    hacer la carga de una base de datos
  • 00:04:08
    relacional que sería esta clase la sql
  • 00:04:10
    database una vez que tenemos eso
  • 00:04:12
    importado pues simplemente le decimos
  • 00:04:14
    Dónde tenemos en nuestro equipo la
  • 00:04:16
    dirección de esa base de datos una vez
  • 00:04:18
    que tenemos cargada la base de datos que
  • 00:04:20
    le hemos metido en un objeto que se
  • 00:04:21
    llama db lo que hacemos Es importar las
  • 00:04:24
    apis entonces en esta parte es donde
  • 00:04:26
    importamos del fichero de Script la Api
  • 00:04:29
    que ya le deberías haber pegado tu Api
  • 00:04:31
    de Open ahí luego lo que hacemos Es
  • 00:04:32
    simplemente importar a os para digamos
  • 00:04:34
    poder utilizar una variable de entorno y
  • 00:04:37
    le cargamos a esta variable del entorno
  • 00:04:39
    le cargamos el resultado de la Api de la
  • 00:04:42
    variable que te enseñé antes en el
  • 00:04:43
    fichero que se llama amp Bars entonces
  • 00:04:46
    de momento lo que tenemos es cargada la
  • 00:04:48
    base de datos ya tenemos preparada
  • 00:04:49
    nuestra Api a partir de aquí empezaría
  • 00:04:51
    un poco lo que es realmente el proceso
  • 00:04:52
    lo primero que vamos a hacer es crear el
  • 00:04:55
    lm es decir crear el propio objeto del
  • 00:04:58
    lenguaje que vamos a utilizar y para
  • 00:05:00
    ello vamos a utilizar chat Open ahí esta
  • 00:05:02
    clase de lanchain también y le vamos a
  • 00:05:04
    definir con una temperatura cero esto
  • 00:05:05
    significa que no queremos nada de
  • 00:05:07
    creatividad en este caso como va a ser
  • 00:05:09
    peticiones directamente un usuario
  • 00:05:10
    queremos que nos haga la traslación a
  • 00:05:12
    sql más parecida a la petición literal
  • 00:05:14
    de ese usuario para lo que devuelva lo
  • 00:05:16
    que realmente el usuario le está
  • 00:05:17
    preguntando y esta parte es importante
  • 00:05:18
    porque es el modelo que vamos a utilizar
  • 00:05:20
    en este caso yo voy a utilizar el 3.5
  • 00:05:23
    Turbo que es bastante más barato que la
  • 00:05:25
    versión 4 de gpt luego a partir de ahí
  • 00:05:28
    lo siguiente que vamos a hacer es crear
  • 00:05:29
    una cadena cuando utilizamos este
  • 00:05:32
    paquete lanchain al final hay como dos
  • 00:05:34
    grandes tipos de cosas que podemos hacer
  • 00:05:36
    podemos hacer las cadenas que es
  • 00:05:38
    simplemente pues ir encadenando procesos
  • 00:05:40
    para obtener nuestros resultados final o
  • 00:05:42
    podemos utilizar otra cosa más avanzada
  • 00:05:44
    que se llama agentes en el cual también
  • 00:05:46
    lo que podemos hacer es bueno pues
  • 00:05:47
    utilizar herramientas externas en este
  • 00:05:49
    caso como no necesitamos ninguna
  • 00:05:51
    herramienta externa pues simplemente
  • 00:05:53
    vamos a utilizar la opción más sencilla
  • 00:05:54
    que es hacer una cadena y lo importante
  • 00:05:56
    es que seleccionemos esta cadena el sql
  • 00:05:58
    database change que esto es precisamente
  • 00:05:59
    lo que nos permite hacer ese proceso de
  • 00:06:01
    transformar la consulta en lenguaje
  • 00:06:03
    natural que nos mete el usuario en un
  • 00:06:05
    objeto de sql luego como paso número 5 y
  • 00:06:08
    aquí está un poco yo creo lo más
  • 00:06:09
    importante de todo el proceso es
  • 00:06:11
    definirle una plantilla de prompt al
  • 00:06:13
    final ya sabemos cuando estamos
  • 00:06:14
    trabajando con modelos del lenguaje que
  • 00:06:16
    gran parte del éxito reside en como
  • 00:06:18
    nosotros le pasemos las instrucciones
  • 00:06:19
    Cuanto más detalladas le pasemos las
  • 00:06:22
    instrucciones en cuanto a lo que
  • 00:06:24
    queremos que nos haga el formato en el
  • 00:06:26
    que queremos que nos lo devuelva
  • 00:06:27
    etcétera pues mucho mejor va a ser la
  • 00:06:29
    respuesta entonces aquí lo que hacemos
  • 00:06:30
    Es Obviamente el usuario cuando va a
  • 00:06:32
    estar utilizando la aplicación Él no
  • 00:06:33
    tiene que escribir todo esto sería un
  • 00:06:35
    rollo el usuario Únicamente lo que tiene
  • 00:06:37
    que escribir es cuál es la consulta que
  • 00:06:38
    quiere realizar pero nosotros le estamos
  • 00:06:40
    añadiendo a esa consulta todo este
  • 00:06:42
    pronta Entonces le estamos diciendo Oye
  • 00:06:44
    dada no Data sino dada una pregunta del
  • 00:06:47
    usuario uno Crea una consulta de ese
  • 00:06:50
    culite 2 revisa los resultados de esa
  • 00:06:53
    consulta tres devuelve el dato que sea
  • 00:06:56
    el resultado de esa consulta y cuatro si
  • 00:06:58
    tienes que hacer alguna o devolver
  • 00:07:00
    cualquier texto que sea bueno aquí no se
  • 00:07:03
    ve muy bien Voy a moverlo que sea
  • 00:07:05
    siempre en español y una vez que tenemos
  • 00:07:07
    esto pues ya lo último que tenemos que
  • 00:07:08
    hacer es simplemente preparar una
  • 00:07:10
    función para hacer esa consulta esa
  • 00:07:12
    función que lo vamos a llamar consulta
  • 00:07:13
    lo único que va a hacer es ese
  • 00:07:15
    input del usuario esa pregunta que haga
  • 00:07:17
    el usuario va a meter esa pregunta
  • 00:07:19
    dentro del formato que nosotros le
  • 00:07:22
    habíamos definido aquí y al final va a
  • 00:07:24
    llamar a la Api de Open ahí pasándole
  • 00:07:28
    esa consulta va a obtener un resultado y
  • 00:07:31
    va a devolver ese resultado entonces una
  • 00:07:33
    vez que tenemos todo esto ya creado
  • 00:07:34
    vamos a ejecutarlo de momento como
  • 00:07:37
    todavía no hemos hecho la interface
  • 00:07:38
    estamos trabajando únicamente a nivel de
  • 00:07:40
    código pero lo que ya hemos hecho pues
  • 00:07:42
    es que todo esto ya está funcionando ya
  • 00:07:43
    tenemos la consulta disponible Y
  • 00:07:45
    entonces si nosotros ahora aquí en la
  • 00:07:46
    propia ventana interactiva ya le hacemos
  • 00:07:48
    una consulta Llamando a esta función y
  • 00:07:51
    le vamos a poner la consulta por ejemplo
  • 00:07:53
    Cuántos registros
  • 00:07:55
    tiene la tabla para ver simplemente se
  • 00:07:58
    está funcionando y nos devuelve que la
  • 00:07:59
    tabla de ventas tiene
  • 00:08:01
    541.909 registros que si recordamos es
  • 00:08:05
    justamente el dato que ya habíamos visto
  • 00:08:07
    cuando estábamos atacando directamente a
  • 00:08:09
    la base de datos Entonces esto significa
  • 00:08:10
    que nuestro backen ya está funcionando
  • 00:08:12
    Ahora lo único que nos falta es
  • 00:08:13
    Construir la interfaz para que el
  • 00:08:15
    usuario lógicamente no tenga que meterse
  • 00:08:17
    en este Script hacer las consultas sino
  • 00:08:19
    que puede hacerlo directamente a través
  • 00:08:20
    de la interfaz de la aplicación Bueno
  • 00:08:21
    pues vamos a pasar ya a ver cómo
  • 00:08:23
    construimos la interfaz que solo hacemos
  • 00:08:24
    aquí en el tercer Script el que se llama
  • 00:08:25
    Front end Pero antes de entrar a
  • 00:08:28
    explicarte el código voy a enseñarte lo
  • 00:08:29
    que es el resultado final que vamos a
  • 00:08:30
    obtener para ello he puesto aquí arriba
  • 00:08:32
    en el comentario como tenemos que lanzar
  • 00:08:33
    esta aplicación es simplemente abrir un
  • 00:08:36
    terminal y lanzarlo desde streamlit que
  • 00:08:38
    es el paquete que vamos a utilizar para
  • 00:08:39
    construir esta aplicación entonces
  • 00:08:41
    abrimos un terminal
  • 00:08:45
    lo lanzamos y ya directamente se nos va
  • 00:08:48
    a abrir un explorador con lo que el
  • 00:08:49
    usuario va a ver que como te decía al
  • 00:08:51
    principio pues es una aplicación muy
  • 00:08:52
    sencilla la he llamado no moleste
  • 00:08:54
    usuario de negocio porque ya habíamos
  • 00:08:56
    dicho de que bueno pues vamos a intentar
  • 00:08:57
    de que nos liberen de todas esas tareas
  • 00:08:59
    no y lo que le dice el chat al usuario
  • 00:09:01
    de negocio es puedes hacerme a mí todas
  • 00:09:02
    las preguntas y dejar trabajar tranquilo
  • 00:09:04
    al equipo de Data Science Bueno A partir
  • 00:09:07
    de ahí aquí tenemos pues la típica
  • 00:09:08
    interfaz de chat en que te puede ayudar
  • 00:09:10
    y voy a ponerle pues la misma pregunta
  • 00:09:12
    que le había puesto antes cuando hicimos
  • 00:09:13
    la consulta del backend simplemente para
  • 00:09:15
    ver que funciona después ya vamos a
  • 00:09:17
    trabajar un poquito más en hacer unos
  • 00:09:18
    ejemplos más avanzados pero de momento
  • 00:09:20
    simplemente quería enseñarte lo que es
  • 00:09:21
    la interfaz y ver que efectivamente
  • 00:09:22
    funciona no entonces podemos ponerle
  • 00:09:24
    Cuántos registros
  • 00:09:27
    tiene la tabla le hacemos esta pregunta
  • 00:09:30
    se lanzamos y ahora ya lo que es la
  • 00:09:32
    respuesta Pues nos la va a devolver aquí
  • 00:09:33
    debajo y nos dice la tabla tiene
  • 00:09:36
    541.909 Regis Bueno pues esto es lo que
  • 00:09:38
    vamos a hacer con el código que te voy a
  • 00:09:40
    enseñar ahora vale en este caso no voy a
  • 00:09:42
    detenerme mucho en explicarte el código
  • 00:09:43
    ya te he dicho que lo puedes Descargar
  • 00:09:45
    Si quieres en la descripción están las
  • 00:09:47
    instrucciones y Bueno pues este código
  • 00:09:48
    es mucho más táctico no de las cajitas
  • 00:09:50
    de los botones de los eventos click
  • 00:09:51
    entonces Simplemente te voy a dar una
  • 00:09:53
    visión por arriba de lo que se está
  • 00:09:54
    haciendo en cada caso a ver si puedo
  • 00:09:56
    poner esto un poquito más largo ahí
  • 00:09:59
    entonces aquí simplemente pues hacemos
  • 00:10:00
    la importación de los paquetes
  • 00:10:01
    necesarios Stream lead como el paquete
  • 00:10:03
    base que nos permite hacer aplicaciones
  • 00:10:04
    sin necesidad de tener que saber html y
  • 00:10:07
    css sino simplemente con python y luego
  • 00:10:09
    necesitamos también instalar otro
  • 00:10:10
    paquete diferente este de Stream lead no
  • 00:10:13
    es un módulo de Stream lead sino que es
  • 00:10:15
    un paquete diferente que al final lo que
  • 00:10:17
    nos permite es ponerle esa interfaz
  • 00:10:18
    estilo de chat para poder Bueno pues
  • 00:10:21
    hacer una aplicación como la que te he
  • 00:10:22
    enseñado después Aquí simplemente pues
  • 00:10:24
    le ponemos los títulos que viste al
  • 00:10:26
    comienzo de la aplicación aquí lo único
  • 00:10:28
    que hacemos Es crear dos listas una para
  • 00:10:29
    las preguntas otra para las respuestas Y
  • 00:10:31
    después lo más importante yo creo que
  • 00:10:33
    está aquí en esta función de clic que es
  • 00:10:35
    lo que pasa cuando el usuario hace clic
  • 00:10:37
    en el botón de enviar y que es
  • 00:10:40
    básicamente aquí donde ves que pone
  • 00:10:42
    respuesta que lo que estamos haciendo es
  • 00:10:44
    Llamar a nuestro Script a nuestro módulo
  • 00:10:47
    de backenz y dentro del módulo de
  • 00:10:49
    backenz te acuerdas de la función que
  • 00:10:51
    habíamos definido que se llamaba
  • 00:10:52
    consulta y esta es un poco la que hace
  • 00:10:54
    la magia porque aquí lo que estás
  • 00:10:55
    haciendo es le estás pasando la pregunta
  • 00:10:56
    que el usuario ha metido en la cajita
  • 00:10:58
    del chat si lo estás pasando al backend
  • 00:11:01
    Y pues ejecutando esa funcionalidad que
  • 00:11:04
    vimos antes que es la que se produce
  • 00:11:05
    cuando llevamos a la función de consulta
  • 00:11:07
    no que es la que llama la Api de chat
  • 00:11:10
    gpt nos devuelve el código de sql pero
  • 00:11:12
    no nos devuelve directamente el código
  • 00:11:13
    sino que lo que hace es lo pasa a la
  • 00:11:15
    base de datos utilizando lanchain la
  • 00:11:17
    base de datos resuelve esa consulta y ya
  • 00:11:19
    nos devuelve directamente la respuesta
  • 00:11:21
    para el usuario entonces todo eso que es
  • 00:11:23
    lo más importante de toda esta parte En
  • 00:11:25
    mi opinión pasa aquí en esta en esta
  • 00:11:28
    línea pero luego a partir de ahí pues ya
  • 00:11:29
    la última parte es simplemente como
  • 00:11:31
    hacerlo un bucle infinito que nos
  • 00:11:33
    permite ponerle un tic para que bueno
  • 00:11:36
    pues después de hacer la primera
  • 00:11:37
    pregunta el usuario si quiere pueda
  • 00:11:39
    continuar haciendo preguntas eso es
  • 00:11:41
    básicamente lo que hace y ya está Esta
  • 00:11:43
    es nuestra app Así que ahora ya lo único
  • 00:11:45
    que nos queda pues es hacer un par de
  • 00:11:46
    consultas para ponerla a prueba vamos a
  • 00:11:48
    empezar con una un poquito más sencilla
  • 00:11:49
    y luego después vamos a hacer otra que
  • 00:11:52
    ya va a requerir una estructura de sql
  • 00:11:53
    un poco más complicada a ver si también
  • 00:11:55
    es capaz de resolverlos Bueno pues
  • 00:11:57
    empezamos con la consulta más sencilla
  • 00:11:58
    por ejemplo vamos a hacerle esta
  • 00:12:00
    consulta de Cuáles son los tres países
  • 00:12:02
    en los que tenemos más ventas totales y
  • 00:12:04
    le vamos a decir sacan una tabla con el
  • 00:12:06
    país y su total de ventas ejecutamos y
  • 00:12:10
    ya tenemos la respuesta nos dice los
  • 00:12:11
    tres países con más ventas totales son y
  • 00:12:13
    United Kingdom con un total de ventas de
  • 00:12:15
    8 millones 187 mil y el segundo
  • 00:12:19
    netherlands con un total de ventas de
  • 00:12:22
    284.000 para comprobar si esto es cierto
  • 00:12:24
    vamos directamente a la base de datos
  • 00:12:26
    vamos a una consulta en sql
  • 00:12:28
    concretamente lo que le estamos diciendo
  • 00:12:30
    es Devuélveme el país y la suma de las
  • 00:12:33
    ventas totales de la tabla ventas y para
  • 00:12:36
    que nos haga esta suma de ventas totales
  • 00:12:37
    por país tenemos que agrupar por país
  • 00:12:39
    luego como únicamente queremos los tres
  • 00:12:41
    superiores pues lo que le vamos a decir
  • 00:12:43
    es que nos ordene los resultados por la
  • 00:12:45
    suma de las ventas totales pero en
  • 00:12:47
    descendente y nos quedamos con los tres
  • 00:12:49
    primeros y efectivamente el resultado
  • 00:12:50
    que tenemos es que el primero es lo que
  • 00:12:52
    pasó acá nos lo da en inglés como lo
  • 00:12:54
    habíamos pedido a ser gpt que nos lo
  • 00:12:55
    devolvieran en español pues nos dio
  • 00:12:56
    Reino Unido pero aquí no sale United
  • 00:12:58
    Kingdom que es como viene directamente
  • 00:12:59
    la base de datos Y el número vemos que
  • 00:13:01
    es exactamente el mismo y el segundo
  • 00:13:03
    netherlands Países Bajos y vemos que el
  • 00:13:05
    número es exactamente el mismo Vale pues
  • 00:13:07
    Sabemos que esta consulta que era muy
  • 00:13:08
    sencillita pues la he hecho sin
  • 00:13:09
    problemas pero qué tal haría con una
  • 00:13:11
    consulta un poco más compleja que ya
  • 00:13:13
    requiriese de una estructura de sql un
  • 00:13:16
    poco más avanzada como podría ser una
  • 00:13:17
    subconsulta o una cte por ejemplo vamos
  • 00:13:20
    a hacerlo con una de las consultas más
  • 00:13:22
    típicas en business analytics que es la
  • 00:13:24
    de comparar el porcentaje que representa
  • 00:13:27
    algún ítem en este caso vamos a hacerlo
  • 00:13:29
    por ejemplo con los productos sobre el
  • 00:13:31
    total de ventas de todos los productos
  • 00:13:33
    esto como te digo es algo súper típico
  • 00:13:35
    no Oye pues me calculas las ventas por
  • 00:13:37
    cada uno de los productos y luego me
  • 00:13:38
    dices pues cada producto se representa
  • 00:13:40
    el 5% el 10% o lo que sea sobre el total
  • 00:13:43
    de las ventas totales también se hace
  • 00:13:45
    mucho con comerciales contribución de
  • 00:13:46
    cada comercial sobre las ventas totales
  • 00:13:48
    etcétera etcétera entonces vamos a hacer
  • 00:13:50
    una consulta de este estilo que ya la
  • 00:13:52
    tengo preparada para que no tengamos que
  • 00:13:53
    esperar mientras que las escribo y le
  • 00:13:55
    vamos a decir Dame los cinco productos
  • 00:13:56
    que más se han vendido en cantidad en
  • 00:13:58
    una tabla que tenga el nombre del
  • 00:14:00
    producto el total de unidades vendidas y
  • 00:14:03
    el porcentaje sobre el total de todos
  • 00:14:06
    los productos Esta última parte es la
  • 00:14:07
    que le añade esta complejidad adicional
  • 00:14:10
    Cuando hacemos la consulta en sql porque
  • 00:14:12
    vamos a tener que calcular primero ese
  • 00:14:14
    total de unidades vendidas de todos los
  • 00:14:16
    productos para que después una vez que
  • 00:14:18
    ya tengamos las unidades vendidas de
  • 00:14:19
    cada producto podamos dividir las de
  • 00:14:22
    cada producto por el total de todos los
  • 00:14:23
    productos Y a partir de ahí nos dé el
  • 00:14:26
    porcentaje Bueno vamos la casilla de
  • 00:14:28
    quieres hacer otra pregunta que no lo
  • 00:14:29
    habíamos reseteado Entonces reseteamos
  • 00:14:31
    no nos ha borrado el pron por lo tanto
  • 00:14:33
    se lo vamos a dejar le damos a enviar y
  • 00:14:36
    vamos a ver qué nos devuelve Vale pues
  • 00:14:37
    lo que nos dice es que los cinco
  • 00:14:38
    productos que más se han vendido en
  • 00:14:40
    cantidad son el World to gliders lo que
  • 00:14:43
    sea que ha vendido
  • 00:14:45
    53.847 unidades y después el Jumbo Bag
  • 00:14:48
    que ha vendido
  • 00:14:51
    47.30063 unidades venimos a nuestra base
  • 00:14:54
    de datos y ahora vamos a poner la
  • 00:14:56
    consulta sql tendríamos que hacer para
  • 00:14:58
    responder a esa pregunta si nosotros lo
  • 00:15:00
    hiciéramos directamente escribiéndole
  • 00:15:02
    sql Entonces como te comentaba esta
  • 00:15:04
    parte es la que le da un poquito más de
  • 00:15:06
    complejidad ya que es la estructura de
  • 00:15:07
    lo que se llama una ct donde
  • 00:15:09
    directamente vamos a calcular esta ct
  • 00:15:11
    que la vamos a llamar total unidades y
  • 00:15:13
    Esto va a ser la suma de la cantidad que
  • 00:15:16
    lo vamos a llamar total de la tabla
  • 00:15:18
    ventas Es decir me cojo la tabla ventas
  • 00:15:20
    Me cojo la columna cantidad y hago la
  • 00:15:22
    suma total esto lo que nos va a dar es
  • 00:15:24
    el total total de unidades que se han
  • 00:15:26
    vendido independientemente de los
  • 00:15:28
    productos y luego lo que vamos a hacer
  • 00:15:31
    es la consulta ya principal donde le
  • 00:15:33
    vamos a decir que nos devuelva el
  • 00:15:34
    producto para cada producto la suma del
  • 00:15:36
    total de unidades vendidas esto lo vamos
  • 00:15:38
    a llamar unidades vendidas y luego Aquí
  • 00:15:40
    lo que hacemos Es calcular ya ese ratio
  • 00:15:42
    en el cual tenemos la suma de cantidad
  • 00:15:44
    de cada producto lo multiplicamos por
  • 00:15:47
    100 simplemente para que nos lo devuelva
  • 00:15:48
    En porcentaje y lo dividimos por el
  • 00:15:50
    total de unidades total este total de
  • 00:15:53
    unidades es la ct que habíamos creado
  • 00:15:54
    aquí y este total es la métrica dentro
  • 00:15:57
    del total de unidades que habíamos
  • 00:15:59
    creado aquí con este alias también al
  • 00:16:01
    resultado de esta última operación de
  • 00:16:03
    calcular ese porcentaje pues lo vamos a
  • 00:16:04
    llamar porcentaje total y luego ya pues
  • 00:16:06
    bueno le ponemos las dos tablas que
  • 00:16:08
    vamos a necesitar la tabla real y la ct
  • 00:16:10
    le decimos que lo agrupe por producto
  • 00:16:12
    para que sume estas cantidades por cada
  • 00:16:13
    uno de los productos y al igual que el
  • 00:16:16
    anterior consulta como queremos un top 5
  • 00:16:17
    pues lo que hacemos es primero ordenamos
  • 00:16:19
    en descendente por las unidades vendidas
  • 00:16:21
    y luego decimos que nos devuelva
  • 00:16:23
    únicamente los cinco primeros resultados
  • 00:16:25
    Así que vamos a ejecutar esto y aquí
  • 00:16:27
    tenemos exactamente la misma respuesta
  • 00:16:28
    tenemos el producto que más unidades
  • 00:16:30
    vendidas tiene es el World War 2 con
  • 00:16:34
    53.847 que es el dato que nos devolvía
  • 00:16:36
    también nuestro sistema y nos dice que
  • 00:16:40
    esto es el
  • 00:16:41
    1,04% sobre el total de ventas y nos
  • 00:16:44
    dice que el segundo producto más vendido
  • 00:16:45
    es el Jumbo Back con 47.367 que también
  • 00:16:49
    es exactamente el mismo dato que nos
  • 00:16:51
    devolvía nuestro sistema Bueno pues
  • 00:16:53
    espero que este vídeo te haya servido
  • 00:16:54
    Para que conozcas otra aplicación de la
  • 00:16:56
    Inteligencia artificial a la empresa y
  • 00:16:58
    también para que veas como tú puedes
  • 00:17:00
    aportar valor a tu empresa como Data
  • 00:17:01
    scientist Recuerda que puedes descargar
  • 00:17:03
    el código para replicar la app
  • 00:17:04
    simplemente suscribiéndote al Canal las
  • 00:17:07
    instrucciones para hacerlo están abajo
  • 00:17:08
    en la descripción del vídeo y nada más
  • 00:17:09
    dale A Like y nos vemos en el siguiente
  • 00:17:11
    de Data Science
Tags
  • Data Scientist
  • Inteligencia Artificial
  • ChatGPT
  • Streamlit
  • SQL
  • Automatización
  • Análisis de Datos
  • Python
  • OpenAI
  • Base de Datos