No sé vosotros, pero yo sigo dándole vueltas a la creación de nuestro “inspector” de modelos semánticos que creamos en los post pasados que nos ayudaba a documentar y revisar nuestro modelo, proponiéndonos puntos de mejora y añadiendo valor añadido a nuestro informe. Si no lo has leído, te dejo aquí los enlaces.
Y en una de esas muchas vueltas que le he dado (casi hasta me mareo 😊) he pensado que una de las tareas a las que nos enfrentamos y nos lleva mucho tiempo es la generación de documentación del proyecto para entregar a cliente. ¿Cómo podríamos apoyarnos en la IA para que nos adelante el trabajo y seamos nosotros quien lo revisemos? ¿Quieres saberlo? Pues no te vayas que te lo cuento a continuación 😉
Partimos del modelo de datos del post anterior y del flujo de Power Automate:
El cual lanzábamos una consulta DAX a la tabla con la información de las funciones INFO.VIEW y con esa respuesta, se la enviábamos a ChatGPT vía API para que nos hiciese el trabajo de documentar el modelo. ¿Correcto? Bien, y ahora os pregunto, ¿por qué no aprovechar esto para generar parte de la documentación a entregar a cliente? Bien, lo primero que vamos a realizar es la creación de una plantilla tipo en Word, de manera que sea una estándar para todos nuestros informes. ¿Cómo lo hacemos? De la siguiente manera:
Abrimos Microsoft Word y nos vamos a la opción de “Programador” en la cinta de opciones:
En esta nueva acción HTTP, modificamos el modelo al cual hacemos la consulta, en este caso, es al modelo GPT-4o, modificamos también el content, que es el prompt que le pasamos y el número de tokens, así la respuesta que nos devuelva es más amplia que en el ejemplo anterior.
Una vez lanzamos la pregunta a ChatGPT, como buena y educada IA, nos devuelve una respuesta a nuestra pregunta, pero esta respuesta tiene un formato JSON que debemos “traducir” para el mundo real, para ello usamos la misma configuración que utilizamos la vez pasada y no es otra que:
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"object": {
"type": "string"
},
"created": {
"type": "integer"
},
"model": {
"type": "string"
},
"system_fingerprint": {
"type": "string"
},
"choices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"message": {
"type": "object",
"properties": {
"role": {
"type": "string"
},
"content": {
"type": "string"
}
}
},
"finish_reason": {
"type": "string"
}
},
"required": [
"index",
"message",
"finish_reason"
]
}
},
"usage": {
"type": "object",
"properties": {
"prompt_tokens": {
"type": "integer"
},
"completion_tokens": {
"type": "integer"
},
"total_tokens": {
"type": "integer"
}
}
}
}
}
formatDateTime(
addSeconds('1970-01-01T00:00:00Z', int(body('ArchivoJSON2')?['created'])),
'yyyy-MM-dd HH:mm:ss'
)
replace(
replace(
replace(
replace(
replace(
body('ArchivoJSON2')?['choices'][0]['message']['content'],
'### ', '<h1>'
),
'#### ', '<h2>'
),
'**', ''
),
'* ', '• '
),
'\n', '<br>'
)
¿¿Qué diablos es esto que acabo de escribir?? ¿Estoy poseído? No, tranquilos. Lo que acabo de escribir es una expresión ya que ChatGPT devuelve el contenido en formato Markdown, pero Power Automate lo interpreta como texto plano.
Explicación de cada replace():
- replace('### ', '<h1>') → Convierte ### en un título principal (h1).
- replace('#### ', '<h2>') → Convierte #### en subtítulos (h2).
- replace('**', '') → Elimina los ** que intentan hacer negritas en Markdown.
- replace('* ', '• ') → Convierte listas Markdown (* texto) en listas con puntos (• texto).
- replace('\n', '<br>') → Reemplaza saltos de línea de texto plano con saltos de HTML.
Una vez ya hemos dado el formato deseado a la respuesta de ChatGPT (comentar que este es un ejemplo, habrá un millón de posibilidades más y mejores que esta, pero no me las sé, ya que no soy experto en Power Automate) llamamos a la plantilla que hemos creado al inicio de este post mediante la acción Rellenar una plantilla de Microsoft Word y rellenamos los siguientes campos:
En el recuadro rojo, le indicamos:
- La ubicación de la plantilla
- Dónde buscarla
- El nombre del archivo
Y luego, en la parte inferior, vemos que nos ha “leído” los contenidos que hemos añadido en el Word y rellenamos los campos con:
- El mensaje devuelto por ChatGPT
- La hora del mensaje
Ahora ya tenemos:
- El mensaje enviado
- El mensaje recibido
- El mensaje formateado
- El archivo Word rellenado
Nos queda, guardar el archivo en el formato deseado. Para este ejemplo, voy a guardarlo en docx. Para ello, añadimos la acción Crear Archivo y le añadimos los siguientes campos:
Si vamos ahora a la carpeta de OneDrive, vemos:
¿Qué os parece? A mi me está maravillando…