Como vimos en la primera parte del artículo, hoy en día, la mayoría de las empresas buscan formas de optimizar sus procesos y mejorar su productividad, constantemente.
Para lograr estos objetivos, son muchas las empresas que utilizan Microsoft Power Automate, una herramienta que permitirá a nuestra empresa automatizar tareas repetitivas y simplificar procesos.
Por ello, en el artículo de hoy, vamos a explicar de manera practica y paso a paso cómo integrar ChatGPT en Microsoft Teams mediante Power Automate.
El resultado final que obtendremos será un asistente llamado Tequibot, que estará a nuestra disposición para contestar a las preguntas que le hagamos, integrado en un canal de Microsoft Teams utilizando la API de OpenAI.
Veamos ahora, paso a paso, como integrar ChatGPT en Microsoft Teams, la aplicación de colaboración creada por Microsoft.
En primer lugar, debemos de crear una cuenta en OpenAI y generar una “Secret Key”.
Este Token lo utilizaremos posteriormente en el flujo que vamos a crear. Es importante saber que no debemos compartirlo, ya que permite el uso de la API con nuestra cuenta.
Iniciamos sesión en Power Automate, y creamos un flujo con el Trigger “When keywords are mentioned” de Microsoft Teams.
Lo siguiente que debemos hacer, será elegir la palabra clave que activará el flujo, en nuestro caso Tequibot, e indicamos el canal de Teams que queremos utilizar.
A continuación, inicializamos las variables prompt y gptResponse, que utilizaremos posteriormente en el flujo.
Ahora añadimos un control del tipo “Apply to each” e insertamos el siguiente valor en el campo “Select an output from previous steps”:
@{triggerOutputs()?['body/value']}
A continuación, añadimos una nueva acción del tipo “Get message details (Teams)” con los siguientes valores:
Ahora debemos guardar en la variable prompt el contenido del mensaje que inicia la acción, con el siguiente valor:
@{outputs('Get_message_details')?['body/body/content']}
El siguiente punto consiste en hacer la petición a la API de OpenAI.
Para ello utilizamos el componente HTTP, que es de tipo “Premium” pero se puede utilizar el periodo de prueba, con los siguientes valores:
Se trata de una petición de tipo POST al EndPoint
https://api.openai.com/v1/chat/completions, con los headers “Accept” y “Content-Type” indicados.
El valor del Token es el generado en el Paso 1 con el prefijo Bearer.
El modelo utilizado en este caso es el gpt-4, aunque se puede utilizar también el gpt-3.5-turbo simplemente cambiando el valor de la variable model.
El primer mensaje es de tipo “role system” y nos sirve para dar contexto al Bot. Pero si lo deseamos, podemos cambiar este valor para ajustar los resultados obtenidos.
El segundo mensaje, es el que hemos escrito en el canal de Microsoft Teams y que hemos guardado previamente en la variable prompt.
Además, podemos cambiar el valor max_tokens para permitir un tamaño mayor de la respuesta.
Es importante saber que valores bajos de la variable temperature, harán que las respuestas sean menos variables, pero con más fiabilidad. Valores más altos pueden devolver respuestas más creativas, pero también más imprecisas en ocasiones.
Si lo necesitamos, podemos encontrar más detalle de la API en el siguiente enlace.
En este punto, debemos recoger el valor devuelto en la petición y guardarlo en la variable gptResult:
El valor se obtiene a partir la siguiente expresión:
body('HTTP')?['choices'][0]?['message/content']
Ahora, solo queda añadir la acción para responder el mensaje, a partir de la respuesta obtenida de ChatGPT.
Para ello añadimos una acción del tipo “Reply with a message in a channel” de Microsoft Teams, con los siguientes valores, utilizando la variable gptResponse:
¡Ahora tan solo nos falta activar el flujo y ya podemos probarlo!
Un punto de mejora muy interesante es ofrecer la posibilidad de convertir la respuesta a voz, mediante el servicio Text to Speech de Cognitive Services de Azure.
Para ello tan solo debemos:
Además, en Microsoft Teams podemos usar una tarjeta adaptable como respuesta en que además del texto, incluya un botón con el link al audio generado.