AnalyticsMachine LearningPower BITutoriales

Conectar Power BI con ChatGPT (Azure Open AI) (Parte 1)

En el tutorial de hoy veremos como conectar nuestro informe de Power BI con Azure Open AI (servicio de ChatGPT y Dall.E en la nube de Microsoft). Con ello podremos super-vitamizar nuestros informes con Inteligencia Artificial Generativa. Este será el primero de varios tutoriales sobre este tema.

Antes de empezar con el tema de este post, debo mencionar a Mar Lizana y Adrià Belmonte por ser la inspiración en la imagen principal de este post (y mi homenaje a Akira Toriyama 1955-2024). Ellos usaron el concepto de Fusión de Dragon Ball en sus sesiones de Power BI + DevOps (que me encantaron) y les he copiado la idea.

¿Qué es Chat GPT y qué es Azure Open AI?

Para el que no lo conozca aún, ChatGPT es una inteligencia artificial con la que podemos chatear y preguntarle prácticamente de todo. Ha sido entrenado con millones de orígenes de datos de internet y puede responder a casi todo. A día de hoy, mucha gente lo usa en su día a día del trabajo para crear contenido, resolver dudas, etc.

Azure OpenAI, es un conjunto de servicios de IA generativa de Microsoft entre los que se incluye este servicio de Chat GPT. La principal ventaja de Azure OpenAI es que todos los datos y conversaciones se quedan dentro de tu tenant de Azure securizado y sabes que no lo usarán terceros. Aparte, es una forma muy cómoda de proporcionar el servicio de ChatGPT a tus empleados de manera segura y controlada.

ChatGPT y Azure OpenAI
ChatGPT y Azure OpenAI

Requisitos Previos: ¿Qué necesitamos?

Lo primero que necesitaremos para conectar nuestro informe de Power BI a Azure OpenAI es dar de alta un recurso de Azure OpenAI en nuestro tenant de Azure (si no eres administrador de Azure puede que no tengas permisos suficientes para crearlo y necesites asistencia de tu administrador).

No me extenderé mucho en esta parte del tutorial, porque quiero centrarme más en cómo conectar ambas herramientas, pero tenéis un tutorial paso a paso en este link: Microsoft Learn Azure OpenAI

Dar de alta este recurso en Azure es tan sencillo como cualquier otro. Simplemente buscamos “Azure Open AI” en la lista de servicios:

Seleccionar Servicio Azure Open AI en tu tenant
Seleccionar Servicio Azure Open AI en tu tenant

y pulsamos en “+ Crear”:

Crear Recurso
Crear Recurso

Una vez creado (le habremos dado un nombre) nos aparecerá en la lista de recursos y podremos usarlo:

Recurso de Azure OpenAI creado
Recurso de Azure OpenAI creado

Necesitaremos 4 características del mismo:

  • Nombre del Recurso creado de Azure OpenAI: el nombre que veis subrayado en la imagen anterior.
  • Deployment (entorno): una vez creado el recurso podeis entrar en Azure OpenAI Studio y dar de alta un deployment o entorno y aqui necesitamos su nombre.
  • API Version: versión de la API de ChatGPT que usa ese entorno.
  • API KEY: clave de la API que obtendrás en el proceso de creación del recurso (para que no todo el mundo pueda conectarse a tu servicio de Azure).

Tened en cuenta que este servicio es de pago y, por lo tanto, cuando vayáis usándolo irá cargando un coste a la tarjeta de crédito asociada).

Conectando OpenAI a Power BI Desktop

Con el recurso en marcha y guardados esos 4 datos, ya podemos conectarlo con nuestro Power BI Desktop. Para realizar la conexión usaremos como origen de datos el tipo “web” en el que le pasaremos:

  • URL: la dirección web a la que conectarnos al endpoint de la API de Azure OpenAI (Ahora veremos como se construye).
  • Header: la cabecera de nuestra llamada a la API (aquí incluiremos la APIKEY).
  • Body: nuestro cuerpo de la llamada donde haremos la pregunta a ChatGPT.

¿Cómo se construye la URL?

La URL la crearemos a partir de la siguiente estructura:

https://+RESOURCE_NAME+.openai.azure.com/openai/deployments/+DEPLOYMENT+/chat/completions?api-version=+API_VERSION

Con esta url accederemos a nuestro nuevo servicio de Azure OpenAI para poder preguntarle sobre lo que queramos.

¿Cómo construimos el Header?

El Header debería incluir el tipo de contenido (JSON), la APIKEY y el método de llamada (POST). Por lo tanto debería ser algo parecido a:

#”Content-Type”=”application/json”,#”api-key”= API_KEY ,Method=”POST“

¿Qué incluimos en el Body?

Pues aquí tenemos que incluir la estructura de role y contenido que nos solicita ChatGPT:

  • Primero el Rol de la IA (normalmente system)
  • Segundo el contenido de ese rol (le pondremos en situación sobre que especialidad debe saber)
  • Tercero el rol del usuario (normalmente user)
  • Por último, la pregunta del usuario.

La estructura sería:

“messages”:[{“role”: “system“, “content”: “Rol de expert de la IA“},{“role”: “user“, “content”: “Pregunta que queremos realizar”}]

Haciendo la llamada con Power Query

Traeremos los datos con un conector web de Power BI y modificando la consulta en Power Query o directamente con una consulta en blanco y escribiendo el código desde cero.

El código final tendría este aspecto:

let
 // Parametros
 url = Text.Combine({"https://",RESOURCE_NAME,".openai.azure.com/openai/deployments/",DEPLOYMENT,"/chat/completions?api-version=",API_VERSION}),
 GetJson = Web.Contents(url,
     [
         Headers = [#"Content-Type"="application/json",
                    #"api-key"= API_KEY 

                    ,Method="POST"],
         Content = Text.ToBinary("
  {""messages"":[{""role"": ""system"", ""content"": ""Eres un experto en Business Intelligence""},{""role"": ""user"", ""content"": ""¿Es mejor Power BI que Qlik?""}]}")
         
     ]
 ),
 FormatAsJson = Json.Document(GetJson),
    #"Convertido en tabla" = Record.ToTable(FormatAsJson),
    Value = #"Convertido en tabla"{0}[Value],
    Value1 = Value{0},
    message = Value1[message],
    #"Convertido en tabla1" = Record.ToTable(message),
    #"Columnas quitadas" = Table.RemoveColumns(#"Convertido en tabla1",{"Name"}),
    #"Filas inferiores quitadas" = Table.RemoveLastN(#"Columnas quitadas",1)
in
    #"Filas inferiores quitadas"

En Verde os he marcado los parámetros de Power Query que me he creado para la conexión:

Parámetros para la conexión desde PowerQuery
Parámetros para la conexión desde Power Query

En color Morado tenéis el rol del sistema y la pregunta a realizar.

Azure OpenAI nos devuelve la respuesta en formato JSON con metadatos, por eso veis que hay unos pasos posteriores en el que vamos profundizando en la estructura del JSON hasta llegar a la respuesta.

Conclusiones

¿Os ha gustado la idea? Seguro que muchos os estáis preguntando….¿pero esto para que lo usaremos Iván? Tendréis que esperar a la parte 2 de este tutorial, pero podéis ir dándole vueltas a la cabeza a ver que se os ocurre.

Una pequeña pista: ¿y si pudiésemos preguntarle a OpenAI sobre nuestras métricas para que nos las explicase por si un usuario no sabe que significan en nuestro sector?

¡¡Nos vemos en breve!!

¡SUSCRÍBETE YA!
Doy mi consentimiento para almacenar mis datos para envío de newsletters.
Si te suscribes a la newsletter tendrás acceso a los <b><u>ficheros Power BI originales</u></b> de nuestros tutoriales y post. <br><br>Además tendrás derecho a participar en sorteos periódicos que realizaremos en el blog.
We hate spam. Your email address will not be sold or shared with anyone else.
Mostrar más

Iván Arribas

Llevamos siglos generando, relacionando, modificando y almacenando datos....es hora de que les echemos un vistazo. Espero que este blog sirva de ayuda a los que quieran introducirse en este mundo de la Analítica de Datos, igual que me está sirviendo a mi.

Publicaciones relacionadas

6 comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Iván Arribas Delgado.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Bluehost que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Botón volver arriba
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad