1 noviembre, 2026

INSECTUM EVOLUCIONA: GPT-6.1 SOL, AUTOMATE, APPS Y LOS NUEVOS AGENTES DE MICROSOFT FOUNDRY

Hola a todos,

Hoy he revisitado este post: INSECTUM: UNA APP PARA IDENTIFICAR INSECTOS CON POWER APPS, POWER AUTOMATE Y AZURE AI FOUNDRY

Al hacerlo, me he encontrado con una novedad importante: los agentes clásicos de Microsoft Foundry están en proceso de retirada y serán sustituidos por una nueva generación de agentes, con una arquitectura renovada y nuevas posibilidades de integración.

Así que he aprovechado la ocasión para actualizar Insectum, incorporar un modelo más reciente, GPT-6.1 Sol, y adaptar su funcionamiento a la nueva plataforma.

Además, he simplificado considerablemente la integración con Power Automate, pasando de una arquitectura con dos flujos y consultas periódicas a un único flujo que devuelve directamente los resultados a Power Apps.

En este artículo os mostraré los principales cambios y cómo ha evolucionado la solución respecto a su primera versión.

En primer lugar he creado un nuevo agente para orquestar la info de la app. El nuevo agente se debe crear en el nuevo entorno de Foundry:

El agente que ha creado se llama: Insectum-agent y aquí os muestro algunas de sus pantallas principales. Le he añadido unas instrucciones y también he conectado vía API a una web especializada en insectos. Y, por supuesto, he actualizado el modelo de GPT a GPT-6.1 Sol:

Una vez creado y configurado el nuevo agente, volvemos a Power Automate.

En el artículo anterior utilizaba dos flujos: uno para enviar la fotografía e iniciar el análisis del insecto y otro para consultar el estado de la ejecución y recuperar los resultados.

Con la nueva arquitectura de agentes de Microsoft Foundry, he podido simplificar considerablemente este proceso, reduciéndolo a un único flujo de Power Automate.

Ahora, mediante una sola petición HTTP de tipo POST, enviamos la fotografía al agente y recibimos directamente el resultado completo del análisis en formato JSON.

De esta manera, eliminamos la necesidad de realizar consultas periódicas mediante un segundo flujo y de utilizar un temporizador en Power Apps para comprobar si el análisis había finalizado.

El resultado es una integración más sencilla, con menos acciones y una comunicación más directa entre Power Apps y Microsoft Foundry.

Os dejo aquí el flujo:

Y aquí el código de cada evento:


FLUJO: DETECTA_INSECTO
===============================================

ACCIÓN 1: Power Apps (V2)
-----------------------------------------------

Tipo: Desencadenador de Power Apps

Entrada:
    Nombre: ImagenBase
    Tipo: Texto

Descripción:
    Recibe desde Power Apps la fotografía
    codificada como Data URI en Base64.


              ↓


ACCIÓN 2: HTTP
-----------------------------------------------

Nombre real de la acción: HTTP

Método:
    POST

URI:
    [ENDPOINT DEL AGENTE INSECTUM]

Encabezados:
    Content-Type: application/json

Autenticación:
    Active Directory OAuth
    (Credenciales configuradas en la acción)

Cuerpo:

{
  "input": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Analiza esta imagen como Insectum. Identifica el organismo hasta el nivel taxonómico que permitan las evidencias visuales. Consulta iNaturalist cuando sea útil para contrastar la identificación. Devuelve exclusivamente un objeto JSON válido, sin Markdown ni texto adicional. Incluye exactamente las propiedades: posible_identificacion, nombre_cientifico, grupo, nivel_certeza, porcentaje_certeza, peligrosidad, rasgos_visibles, curiosidad, comentario_general, recomendacion_observacion y resumen. El nivel_certeza debe ser baja, media o alta. El porcentaje_certeza debe ser un número entero entre 1 y 99, coherente con el nivel de certeza: baja de 1 a 49, media de 50 a 79 y alta de 80 a 99. Este porcentaje representa una estimación orientativa, no una probabilidad científica calibrada. La peligrosidad debe ser baja, media o alta. El campo grupo debe contener exclusivamente una clasificación zoológica breve. rasgos_visibles debe ser un array de 3 a 5 observaciones breves cuando haya suficientes caracteres visibles. No inventes especies ni características científicas. Utiliza las fuentes externas internamente, pero no incluyas nombres de fuentes, enlaces, URLs, referencias ni citas en ningún campo. Redacta curiosidad, comentario_general y recomendacion_observacion de forma breve y divulgativa. Responde siempre en español de España."
        },
        {
          "type": "input_image",
          "image_url": "@{triggerBody()['text']}",
          "detail": "high"
        }
      ]
    }
  ],
  "stream": false
}


              ↓


ACCIÓN 3: ExtraerRespuesta
-----------------------------------------------

Tipo:
    Operaciones de datos → Redactar

Nombre real:
    ExtraerRespuesta

Entradas (Expresión):

last(body('HTTP')?['output'])?['content']?[0]?['text']

Descripción:
    Extrae el JSON generado por el agente
    desde el último mensaje de la respuesta HTTP.

    El resultado es un texto JSON que contiene
    los campos de identificación del insecto.


              ↓


ACCIÓN 4: Respond to a Power App or flow
-----------------------------------------------

Tipo:
    Responder a una aplicación Power Apps o flujo

Salida:
    Nombre: respuesta
    Tipo: Texto

Valor (Expresión):

outputs('ExtraerRespuesta')

Descripción:
    Devuelve a Power Apps el JSON completo
    generado por Insectum.

Y en la app vamos a poner ahora esto en el botón Analizar:

If(
    IsBlank(AddMediaButton1.Media);
    Notify(
        "Primero debes cargar una imagen.";
        NotificationType.Warning
    );
    Set(
        varText;
        "Analizando imagen..."
    );;
    Set(
        varEstado;
        "processing"
    );;
    Set(
        varDataUri_descript;
        Substitute(
            JSON(
                UploadedImage1.Image;
                JSONFormat.IncludeBinaryData
            );
            """";
            ""
        )
    );;
    Set(
        varRespInicio;
        DETECTA_INSECTO.Run(varDataUri_descript)
    );;
    Set(
        varAnalisis;
        ParseJSON(varRespInicio.respuesta)
    );;
    Set(
        varIdentificacion;
        Text(varAnalisis.posible_identificacion)
    );;
    Set(
        varNombreCientifico;
        Text(varAnalisis.nombre_cientifico)
    );;
    Set(
        varGrupo;
        Text(varAnalisis.grupo)
    );;
    Set(
        varNivelCerteza;
        Text(varAnalisis.nivel_certeza)
    );;
    Set(
        varPorcentajeCerteza;
        Value(varAnalisis.porcentaje_certeza)
    );;
    Set(
        varPeligrosidad;
        Text(varAnalisis.peligrosidad)
    );;
    Set(
        varRasgos;
        Concat(
            Table(varAnalisis.rasgos_visibles);
            "• " & Text(ThisRecord.Value);
            Char(10)
        )
    );;
    Set(
        varCuriosidad;
        Text(varAnalisis.curiosidad)
    );;
    Set(
        varResumen;
        Text(varAnalisis.resumen)
    );;
    Set(
        varComentarioGeneral;
        Text(varAnalisis.comentario_general)
    );;
    Set(
        varRecomendacionObservacion;
        Text(varAnalisis.recomendacion_observacion)
    );;
    Set(
        varEstado;
        "completed"
    );;
    Set(
        varText;
        "Análisis completado"
    )
)

Y en el botón Reset:

Set(varConsultar; false);;
Set(varDataUri_descript; Blank());;
Set(varRespInicio; Blank());;
Set(varAnalisis; Blank());;
Set(varEstado; Blank());;
Set(varText; "");;
Set(varIdentificacion; Blank());;
Set(varNombreCientifico; Blank());;
Set(varGrupo; Blank());;
Set(varNivelCerteza; Blank());;
Set(varPorcentajeCerteza; Blank());;
Set(varPeligrosidad; Blank());;
Set(varRasgos; Blank());;
Set(varCuriosidad; Blank());;
Set(varResumen; Blank());;
Set(varComentarioGeneral; Blank());;
Set(varRecomendacionObservacion; Blank());;
Reset(AddMediaButton1)

La información de las etiquetas se mantiene la misma.

Aquí ya está gestionando la petición el nuevo agente. Mucho más rápido, más fiable y con más información.

Espero que os haya gustado.

Para realizar la prueba, he utilizado una fotografía que tomé en Galicia de una escolopendra que encontré escondida bajo unas piedras. La imagen la capturé con mi equipo de fotografía macro, como las que comparto habitualmente en mi perfil de Instagram, @my.lovely.bugs, dedicado a descubrir y mostrar los pequeños detalles del mundo de los insectos.

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