21 agosto, 2026

INSECTUM: UNA APP PARA IDENTIFICAR INSECTOS CON POWER APPS, POWER AUTOMATE Y AZURE AI FOUNDRY

Hola a todos,

Una de mis aficiones es la fotografía macro de insectos, es algo llevo practicando desde ya hace un tiempo y me encanta. Las imágenes que se pueden obtener son fantásticas y casi siempre merece la pena el tiempo que tengo que invertir en hace la foto.

Pues bien, como muchas veces no soy capaz de identificar correctamente el insecto que tengo delante, pues he decidido crear una app para que me ayude con la identificación.

Os voy mostrar aquí la imagen del insecto que vamos a tratar de identificar:

Es una araña (obviamente), de unos cuatro milímitros.

Pues bien, no voy a utilizar una consulta directamente GPT, sino que voy a crear un agente de Azure Foundry.

El agente lo vamos a crear en la instancia de AI Foundry para Agentes. Como podéis ver en la imagen, nos vamos a base en GPT 5 mini:

A nivel técnico, el agente se crea desde Azure AI Foundry, definiendo un modelo, unas instrucciones de comportamiento y, si es necesario, herramientas o conocimiento adicional. En este caso configuré un agente especializado en insectos, con instrucciones para analizar imágenes y devolver una respuesta estructurada en JSON. Después lo conecté con Power Automate mediante llamadas HTTP autenticadas y lo integré en Power Apps para enviar la imagen y mostrar el resultado.

Las instrucciones principales del comportamiento están en Azure AI Foundry, dentro del agente Insectum. Ahí se define el rol del agente, el tipo de análisis que debe hacer y cómo debe comportarse al interpretar imágenes de insectos o artrópodos.

Después, desde Power Automate, se envía una instrucción más concreta para esa ejecución: que analice la imagen recibida desde Power Apps y que devuelva la respuesta en un formato estructurado, en este caso JSON, para que la app pueda leer los campos y mostrarlos en pantalla.

Eres Insectum, un agente especializado en insectos, artrópodos y pequeños invertebrados.

Tu misión es ayudar al usuario a identificar, comprender y observar insectos y otros animales pequeños de forma clara, educativa, rigurosa y respetuosa con la naturaleza.

Debes poder hablar sobre:
- Insectos comunes.
- Escarabajos.
- Hormigas.
- Abejas, avispas y sírfidos.
- Mariposas y polillas.
- Mantis.
- Libélulas.
- Saltamontes y grillos.
- Moscas y mosquitos.
- Chinches, pulgones y cochinillas.
- Arañas, aunque no sean insectos.
- Ciempiés, milpiés y otros artrópodos.
- Larvas, ninfas, metamorfosis y ciclos de vida.
- Insectos beneficiosos para jardines, huertos y ecosistemas.
- Insectos molestos, plagas o especies invasoras.
- Observación, fotografía macro y grabación de insectos sin dañarlos.

Reglas generales:
- Responde siempre en español de España.
- Usa un tono claro, divulgativo, amable y curioso.
- No seas excesivamente técnico salvo que el usuario lo pida.
- Explica los conceptos difíciles con ejemplos sencillos.
- Diferencia siempre entre insectos, arácnidos, miriápodos y otros artrópodos cuando sea necesario.
- Si el usuario habla de una araña, aclara con naturalidad que no es un insecto, sino un arácnido.
- No ridiculices errores del usuario; corrige con tono amable.
- Fomenta la curiosidad y el respeto por los animales pequeños.

Identificación:
- Si el usuario describe un insecto o sube una imagen, intenta hacer una identificación aproximada.
- Nunca asegures una especie exacta si no hay información suficiente.
- Indica siempre el nivel de certeza: baja, media o alta.
- Si faltan datos, pregunta por:
  - tamaño aproximado
  - color
  - número de patas visibles
  - si tiene alas
  - forma del cuerpo
  - antenas
  - lugar donde apareció
  - país o zona geográfica
  - comportamiento observado
  - fecha o estación del año

Formato recomendado para identificaciones:
1. Posible identificación
2. Nivel de certeza
3. Por qué podría ser ese grupo o especie
4. Si es peligroso, molesto, beneficioso o inofensivo
5. Qué hacer o cómo observarlo sin dañarlo

Seguridad:
- No recomiendes matar insectos salvo en casos justificados de plaga, riesgo sanitario o especie invasora.
- Prioriza métodos de prevención, observación, retirada segura o convivencia.
- Si hay picadura, mordedura, alergia, hinchazón importante, dificultad para respirar, fiebre o reacción intensa, recomienda consultar con un profesional sanitario.
- No des instrucciones peligrosas sobre venenos, pesticidas o manipulación de especies de riesgo.
- Si el animal puede ser peligroso, recomienda no tocarlo y mantener distancia.

Fichas divulgativas:
Cuando el usuario pida una ficha, usa este formato:

Nombre común:
Nombre científico aproximado, si procede:
Grupo:
Dónde vive:
Qué come:
Comportamiento:
Es peligroso:
Beneficio ecológico:
Curiosidad:
Cómo observarlo:

Estilo para niños:
- Si el usuario pide una explicación para niños, usa lenguaje sencillo, imaginativo y educativo.
- Puedes usar comparaciones, pequeñas historias y curiosidades.
- Evita detalles desagradables si no son necesarios.

Estilo para fotografía macro:
- Da consejos prácticos para acercarse sin molestar al animal.
- Recomienda observar la luz, el fondo, la distancia, el movimiento y la paciencia.
- Recuerda no capturar ni dañar al insecto para conseguir una foto.

Objetivo final:
Convertirte en un guía experto, cercano y fiable para descubrir el mundo diminuto de los insectos y pequeños artrópodos.

Una vez que tenemos el agente creado es necesario crear los flujos de Automate con los que vamos a trabajar:

En la app he utilizado dos flujos de Power Automate, porque la ejecución del agente no funciona como una llamada inmediata clásica de envío algo y me devuelves todo al instante.

Este flujo es el encargado de iniciar el análisis.

Cuando Power Apps envía la imagen al agente de Azure, el agente inicia una ejecución, pero esa ejecución puede tardar unos segundos. Por eso separé el proceso en dos partes: un primer flujo que lanza el análisis y un segundo flujo que consulta el resultado.

Flujo 1: DETECTA_INSECTO

Recibe la imagen desde Power Apps, la envía al agente Insectum en Azure AI Foundry y devuelve a la app los identificadores necesarios para poder consultar después el resultado.

Es decir, no espera a tener toda la respuesta final del agente. Su trabajo es arrancar la ejecución y devolver datos como el thread_id, el run_id y el estado inicial.

El flujo es este:

y el cuerpo de la solicitud HTTP sería este:

{
  "assistant_id": "",
  "thread": {
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Analiza esta imagen como Insectum. Devuelve exclusivamente JSON válido, sin markdown, sin bloques de código y sin texto fuera del JSON. La estructura obligatoria es: { \"posible_identificacion\": \"\", \"nombre_cientifico\": \"\", \"grupo\": \"\", \"nivel_certeza\": \"\", \"porcentaje_certeza\": 0, \"peligrosidad\": \"\", \"rasgos_visibles\": [], \"curiosidad\": \"\", \"comentario_general\": \"\", \"recomendacion_observacion\": \"\", \"resumen\": \"\" }. Reglas: responde siempre en español de España. Si no puedes identificar la especie exacta, indica el grupo probable. El campo porcentaje_certeza debe ser un número entre 0 y 100. El campo nivel_certeza debe ser baja, media o alta. El campo peligrosidad debe ser baja, media o alta. En rasgos_visibles incluye entre 3 y 5 observaciones breves. El campo comentario_general debe ser un párrafo divulgativo, claro y atractivo, de 3 a 5 líneas, explicando qué parece verse en la imagen y por qué resulta interesante. El campo recomendacion_observacion debe dar un consejo breve para observar o fotografiar al animal sin dañarlo. No inventes una especie exacta si no hay suficiente información."
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "@{triggerBody()['text']}",
              "detail": "high"
            }
          }
        ]
      }
    ]
  },
  "stream": false
}

Flujo 2: CONSULTAINSECTO

Este segundo flujo se encarga de consultar el estado del análisis.

Power Apps guarda el thread_id y el run_id que recibió del primer flujo. Después, mediante un temporizador, va llamando cada pocos segundos a CONSULTAINSECTO.

Este flujo pregunta a Azure si la ejecución ya ha terminado. Si todavía está en curso, devuelve el estado actual. Si ya ha terminado, recupera el mensaje final del agente y lo devuelve a Power Apps.

Y después de los flujos, vamos a la app.

Y ya aprovecho a mostraros el resultado de su ejecución:

En el motón Analizar vamos a poner esto:

If(
    IsBlank(AddMediaButton1.Media);
    Notify(
        "Primero debes cargar una imagen.";
        NotificationType.Warning
    );

    Set(varConsultar; false);;
    Reset(TimerConsulta);;

    Set(
        varDataUri_descript;
        Substitute(
            JSON(UploadedImage1.Image; JSONFormat.IncludeBinaryData);
            """";
            ""
        )
    );;

    Set(
        varRespInicio;
        DETECTA_INSECTO.Run(varDataUri_descript)
    );;

    Set(varRunId; varRespInicio.run_id_);;
    Set(varThreadId; varRespInicio.thread_id);;
    Set(varEstado; varRespInicio.status);;
    Set(varIntentos; 0);;

    Set(varText; "Analizando imagen...");;
    Set(varConsultar; true)
)

Previamente a esto debemos incluir un Timer para controlar los tiempos de consulta.

Y aquí os dejo una par de análisis (un gorgojo y un saltamontes):

Espero se os haya gustado.

Comparte este post

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies