Hoy nos centramos en cómo se coordinan varios agentes mientras seleccionan herramientas de una caja de herramientas predefinida. Si bien es eficaz, este diseño supone silenciosamente que las herramientas necesarias para una tarea se conocen de antemano.
Cuestionemos esa suposición en este artículo.
Los LLM modernos ya pueden descomponer objetivos complejos en planes de varios pasos, razonar sobre el orden de ejecución y generar código ejecutable correcto. En otras palabras, no sólo utilizan herramientas: también pueden crearlas.
Este artículo explora el uso de una arquitectura agente de plan, código y ejecución para construir un Agente de Explicabilidad de extremo a extremo, donde las herramientas se generan bajo demanda, ilustrado a través de un escenario del mundo real.
La arquitectura propuesta aquí también se adapta fácilmente a otros escenarios.
El escenario
Explicaremos los resultados de un modelo de red neuronal gráfica (GNN) para el pronóstico de la demanda, que exploré en mi artículo anterior. Tenemos las siguientes señales de datos para explicar:
Las características espaciales de los nodos (SKU). Las características temporales (orden de venta, producción, etc.) agregadas a los nodos del gráfico. Resultados de un modelo de red neuronal gráfica entrenado para pronosticar la demanda de un SKU. Resultados de una GNN entrenada para detectar anomalías en producción.
Todo esto generó una serie de análisis, resultados y gráficos que deben explicarse de manera integral, desde la perspectiva de un planificador, que se base en hechos y comprensión del dominio.
Arquitectura del agente de explicabilidad
Crearemos un flujo de trabajo agente de plan, código y ejecución. Para tener control granular, interpretabilidad y flexibilidad en la generación de herramientas, construiremos agentes totalmente personalizados en lugar de trabajar a través de las abstracciones de uno de los marcos de orquestación más conocidos. Se crean los siguientes agentes:
1. El agente analista
Necesitamos un agente analista que sea los ojos de la aplicación. Su trabajo es descubrir el entorno (datos sin procesar, resultados del modelo, resultados anteriores) que utilizará el resto de la aplicación. Evita alucinaciones como que el agente planificador asuma que el archivo de ventas se llama "sales.csv" cuando el nombre de archivo correcto es "Sales Order.csv" en el conjunto de datos.
Además de simplemente escanear lo que hay allí, también abre los archivos y crea un esquema dinámico. Por ejemplo, Sales Order.csv tiene columnas [Fecha, Importe] y demand_vs_production.csv tiene [Predicho, Real]. Esto forma el contexto para el agente de planificación.
2. El planificador
El Planificador recibe el objetivo de alto nivel del usuario y el esquema del Analista. Funciona como el cerebro de la aplicación. Su trabajo es descomponer la solicitud en un gráfico de dependencia de pasos. Para ello, primero infiere la intención de la solicitud del usuario. Si el usuario solicita "Precisión", sabe que debe apuntar a la carpeta Resultados del pronóstico. Si solicitan "Historial de ventas", se dirige a Raw Data. El resultado es un plan JSON que tiene pasos que describen claramente la tarea y también un indicador llamado CÓDIGO o TEXTO. El agente Coder genera herramientas solo para los pasos de CODE.
Resultado de muestra: un plan JSON.
Paso 1: cargue los datos del gráfico y busque vecinos de SOS001L12P. (CÓDIGO) Paso 2: Ventas temporales agregadas vs producción. (CÓDIGO) Paso 3: Calcular WAPE. (CÓDIGO) Paso 4: Preparar resumen (TEXTO)
3. El codificador
El Coder son las manos de la aplicación, que hacen la mayor parte del trabajo. El Codificador recibe cada paso del plan y el esquema. Para cada paso del CÓDIGO del plan, escribe un script de Python ejecutable e independiente.
Maneja importaciones de bibliotecas (pandas, networkx), rutas absolutas y detección de errores. Crea software autosuficiente, no sólo fragmentos de código.
4. El ejecutor
El Ejecutor ejecuta el script generado en un entorno controlado. Para ello, captura stdout y stderr. Si un script falla (por ejemplo, FileNotFound), los registros proporcionan el circuito de retroalimentación para una posible autocorrección (aunque esto no sucede debido a la base proporcionada por el esquema del analista).
5. El reportero
Finalmente, el Reportero lee los registros y artefactos (CSV, PNG) producidos por los scripts y responde la pregunta original del usuario, en el tono, la profundidad y la personalidad requerida por el usuario. Funciona como la Voz de la aplicación.
Los agentes se llaman en secuencia utilizando un script de orquestación simple (main.py). Un config.py contiene la ruta de la carpeta del conjunto de datos que contiene la información de nodos y bordes, y a las carpetas de resultados de los modelos de previsión de demanda y detección de anomalías de producción. Cada uno de los agentes y el script de orquestación tiene menos de 100 líneas de código. El LLM utilizado es gemini-2.5-flash.
El principal error encontrado durante las pruebas fue que el agente codificador refirió una fuente de datos que no está presente (alucinación), por lo que reforcé el mensaje del codificador para seguir estrictamente el contexto del paso del plan. Además, el agente analista inicialmente no estaba allí y se agregó como un paso de conexión a tierra ante el planificador para evitar alucinaciones.
Aquí está el código del agente planificador para referencia import json de ..llm.client import GeminiClient class Planner: def __init__(self): self.llm = GeminiClient() def create_plan(self, user_prompt, dataset_context=""): """Descompone el mensaje del usuario en pasos de ejecución.""" system_prompt = f""" Usted es un gerente de proyecto senior para un equipo de ciencia de datos. Su objetivo es desglosar una solicitud de usuario de alto nivel en una lista de pasos ejecutables específicos. — CONJUNTO DE DATOS DISPONIBLE (Use nombres de archivos EXACTOS) — {dataset_context} ———————————————– — DIRECTRICES DEL CONJUNTO DE DATOS — – El conjunto de datos contiene 'Datos sin procesar' (Histórico) y 'Resultados del modelo' (Predicciones/Anomalías). – Infiera CUIDADOSAMENTE qué fuente se necesita según el objetivo del usuario. "Precisión del pronóstico" -> Resultados del modelo: lista JSON de objetos con campos: – step_id: int – nombre: str (título corto) – descripción: str (instrucciones detalladas para el codificador) – escriba: "CÓDIGO" (si requiere escribir un script) o "TEXTO" (si es solo un resumen) — RESTRICCIÓN DE ALCANCE — – NO USE Aprendizaje automático (regresión lineal, entrenamiento, bosque aleatorio). (Media, mediana, desarrollo estándar, puntuación Z, promedios móviles). – ENFOQUE en la visualización de datos (gráficos de líneas, histogramas). – Si el usuario solicita "pronóstico" o "precisión", PREFIERA WAPE (MAPE ponderado) sobre MAPE estándar. Ejemplo: Usuario: "Analizar SKU001" Salida: [ {{"step_id": 1, "name": "Cargar datos", "descripción": "Cargar". Nodes.csv y filtro para SKU001 para obtener información básica.", "type": "CODE"}}, {{"step_id": 2, "name": "Análisis temporal", "description": "Cargar Production.csv y Sales.csv. Calcule el volumen mensual y la tendencia para SKU001.", "type": "CODE"}} ] """ full_prompt = f"{system_prompt}nnSolicitud de usuario: {user_prompt}nPlan JSON:" respuesta = self.llm.generate_content(full_prompt) # limpieza básica para bloques de rebajas JSON clean_response = Response.replace("“`json", "").replace("“`", "").strip() print(f"n[DEBUG] Respuesta sin procesar del planificador:n{respuesta}n") # Agregado para el intento de depuración: return json.loads(clean_response) excepto json.JSONDecodeError: print(f"Error al analizar el plan: {respuesta}") return[]
Resultados del experimento
Nos centraremos en la explicabilidad de un extremo a otro del SKU SOS001L12P. Este es el nodo con mayor volumen de ventas. Los planificadores y la gerencia estarían interesados en comprender los problemas desde el principio para satisfacer la demanda y mantener la calidad del servicio.
Construiremos la explicabilidad en 4 pasos:
Analizar las relaciones compartidas de este SKU con sus vecinos en la red de suministro. Analizar la tendencia en el volumen de ventas. Correlacione con la señal de producción, observe anomalías. Cree un informe completo que combine con la calidad del pronóstico de la demanda para explicar el estado de este SKU.
Análisis espacial
El objetivo fijado para el agente era
“Realiza un análisis exhaustivo de la estructura espacial alrededor del nodo SOS001L12P y dame una visualización del gráfico.
bordes con etiquetas que conectan este SKU con sus vecinos”
El agente planificador creó un plan de cinco pasos para cargar datos de nodos y bordes, extraer atributos de vecinos y bordes, preparar una visualización gráfica con etiquetas y crear un informe para la estructura espacial.
Este es el plan [ { "step_id": 1, "name": "Cargar datos de nodo y borde", "descripción": "Cargar 'Nodes.csv' para confirmar que 'SOS001L12P' es un nodo válido. Cargar todos los conjuntos de datos de borde: 'Edges (Plant).csv', 'Edges (Product Group).csv', 'Edges (Product Sub-Group).csv' y 'Edges (Ubicación de almacenamiento).csv'. Estos archivos contienen la información estructural necesaria para el análisis espacial.", "type": "CODE" }, { "step_id": 2, "name": "Extraer vecinos directos y atributos de borde", "description": "Itere a través de cada conjunto de datos de borde cargado. Para cada conjunto de datos, filtre las filas donde 'SOS001L12P' esté presente en la columna 'nodo1' o 'nodo2'. Para cada registro coincidente, identifique el vecino. nodo y extraiga el atributo de borde específico que define la relación (por ejemplo, 'Planta' de 'Edges (Plant).csv', 'GroupCode' de 'Edges (Product Group).csv', 'SubGroupCode' de 'Edges (Product Sub-Group).csv', 'Storage Location' de 'Edges (Storage Location).csv'. Consolide todos los vecinos únicos y sus correspondientes relaciones etiquetadas en un objeto). estructura única.", "type": "CODE" }, { "step_id": 3, "name": "Preparar gráfico para visualización", "description": "Construya un objeto de gráfico (por ejemplo, usando NetworkX) con 'SOS001L12P' como nodo central. Agregue todos los vecinos directos identificados como nodos y cree bordes entre 'SOS001L12P' y cada vecino. Asigne los atributos de borde extraídos (por ejemplo, 'Planta: Planta A', 'GroupCode: GRP1') como etiquetas para estos bordes para mayor claridad en la visualización.", "type": "CODE" }, { "step_id": 4, "name": "Visualizar los bordes del gráfico con etiquetas", "description": "Genere una visualización gráfica clara de la estructura espacial alrededor de 'SOS001L12P'. El gráfico debe mostrar 'SOS001L12P' de manera destacada en el centro, con sus vecinos directos conectados por. bordes. Cada borde debe estar etiquetado explícitamente con el tipo de relación y su valor de atributo específico (por ejemplo, 'Planta: P001', 'Grupo de productos: PG002'). Asegúrese de que el diseño y el estilo sean adecuados para facilitar la lectura.", "type": "CODE" }, { "step_id": 5, "name": "Resumir la conectividad espacial", "description": "Proporcione un resumen textual de la estructura espacial alrededor de 'SOS001L12P'. de entidades a las que está conectado (Plantas, Grupos de productos, Subgrupos de productos, Ubicaciones de almacenamiento), enumere los vecinos específicos identificados y explique brevemente la naturaleza de estas conexiones según las etiquetas de los bordes.", "type": "TEXT" } ]
El agente codificador creó 4 herramientas, una para cada uno de los pasos del CÓDIGO
Y el resultado principal es el gráfico de las relaciones de este SKU con sus vecinos con todas las relaciones etiquetadas, como plantas compartidas, ubicaciones de almacenamiento, grupos de productos, etc.
Y se genera un breve informe de los hallazgos que señala:
"Relaciones con vecinos: el análisis identificó 39 relaciones distintas que conectan SOS001L12P con 39 nodos vecinos únicos".
Informe completo aquí Se ha completado un análisis exhaustivo de la estructura espacial alrededor del nodo `SOS001L12P`. **Hallazgos del análisis:** 1. **Validación de nodo:** El nodo `SOS001L12P` se confirmó como un nodo válido dentro de los datos maestros. 2. **Relaciones con vecinos:** El análisis identificó 39 relaciones distintas que conectan "SOS001L12P" con 39 nodos vecinos únicos. Estas relaciones se clasifican por `RelationshipType` y `RelationshipValue`: * **Planta:** `SOS001L12P` está conectado a múltiples vecinos a través de varios códigos de 'Planta' (por ejemplo, 2103, 2111, 2112, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122). * **GroupCode:** `SOS001L12P` comparte 'GroupCode' 'S' con vecinos como `SOS008L02P`, `SOS005L04P`, `SOS003L04P`, `SOS002L09P`, `SOS500M24P`, `SOS250M48P`, `SOP001L12P`, `SO0005L04P`, `SO0002L09P`, `SO0001L12P`, `SO0500M24P`, `SE500G24P` y `SE200G24P`. * **SubGroupCode:** `SOS001L12P` está vinculado mediante 'SubGroupCode' 'SOS' a nodos como `SOS008L02P`, `SOS005L04P`, `SOS003L04P`, `SOS002L09P`, `SOS500M24P` y `SOS250M48P`. * **Ubicación de almacenamiento:** `SOS001L12P` está asociado con sus vecinos a través de varios códigos de 'Ubicación de almacenamiento' (por ejemplo, 330.0, 1130.0, 1230.0, 1430.0, 1530.0, 1630.0, 1730.0, 1830.0, 1930.0, 2030.0, 2130,0, 2230,0). La lista completa de vecinos y sus relaciones específicas se puede encontrar en `C:/Auto-agent/workspace/outputSOS001L12P_neighbors_relationships.csv`. **Visualización:** Se generó una visualización de gráfico, centrada en `SOS001L12P` y que muestra todos sus vecinos directos y sus bordes de conexión con etiquetas que indican `RelationshipType` y `RelationshipValue`. El gráfico resultante contiene 40 nodos (incluido `SOS001L12P`) y 39 aristas. La visualización está disponible en: `C:/Auto-agent/workspace/outputSOS001L12P_neighbor_graph.png`
Análisis de la señal de orden de venta (demanda)
Dado que estamos interesados en la precisión del modelo de pronóstico de la demanda, es importante analizar las tendencias de ventas. El objetivo se fijó:
"realizar un análisis de la señal temporal de la orden de venta de SOS001L12P observando la tendencia, los valores atípicos y cualquier anomalía en las tendencias del volumen"
El planificador generó un plan de 6 pasos para cargar y procesar datos de ventas, crear promedios móviles de 7 y 30 días, calcular valores atípicos, visualizar tendencias y preparar un informe.
El plan está aquí [ { "step_id": 1, "name": "Cargar datos de pedido de ventas para SOS001L12P", "description": "Cargue el archivo 'Sales Order.csv' desde C:\AnomalyGNN\dataset\Raw Dataset\Temporal Data\Unit\Sales Order.csv. Concéntrese en las columnas 'Fecha' y 'SOS001L12P', tratando 'SOS001L12P' como volumen de ventas.", "type": "CODE" }, { "step_id": 2, "name": "Preprocesar datos temporales", "description": "Convierta la columna 'Fecha' en objetos de fecha y hora y configúrela como índice del marco de datos. Asegúrese de que la columna de volumen de ventas (SOS001L12P) sea numérica. Maneje los valores faltantes, posiblemente completando con 0 o completando hacia adelante/hacia atrás si corresponde para los datos de ventas. (especifique el método elegido).", "type": "CODE" }, { "step_id": 3, "name": "Analizar tendencias del volumen de ventas", "description": "Calcule los promedios móviles de 7 y 30 días para el volumen de ventas 'SOS001L12P'. Estos ayudarán a identificar tendencias a corto y largo plazo en la señal de ventas. Guárdelas como nuevas columnas en el DataFrame.", "type": "CODE" }, { "step_id": 4, "name": "Detectar valores atípicos usando Z-Score", "description": "Calcule el puntaje Z para el volumen de ventas 'SOS001L12P'. Identifique valores atípicos potenciales marcando puntos de datos donde el puntaje Z absoluto excede un umbral predefinido (por ejemplo, 2 o 3 desviaciones estándar). Almacene el puntaje Z y una columna booleana 'Is_Outlier'.", "type": "CODE" }, { "step_id": 5, "name": "Visualizar la señal temporal de la orden de venta", "description": "Cree un gráfico de líneas de serie temporal que muestre el volumen de ventas 'SOS001L12P' a lo largo del tiempo. Superponga los promedios móviles de 7 y 30 días. Resalte los valores atípicos identificados en el gráfico para representar visualmente las anomalías en las tendencias de volumen.", "type": "CODE" }, { "step_id": 6, "name": "Resumir tendencias y anomalías", "description": "Proporcione un resumen textual de las tendencias observadas (p. ej., estacionalidad, crecimiento/disminución), la frecuencia y magnitud de los valores atípicos identificados y cualquier otra anomalía o cambio notable en los patrones de volumen de ventas de SOS001L12P. Este resumen debe interpretar las visualizaciones y medidas estadísticas.", "type": "TEXT" } ]
El agente codificador creó 5 herramientas y el resultado principal del proceso es la siguiente tendencia. La observación notable es una tendencia a la baja en la segunda mitad del período, lo que podría ser motivo de preocupación que debe investigarse.
El informe de análisis también señala esta tendencia a la baja.
"Disminución persistente: la disminución constante tanto en las ventas diarias como en los promedios móviles (de 7 y 30 días) de enero a agosto indica claramente una disminución persistente en el volumen de ventas de SOS001L12P".
Aquí está el informe completo **Análisis de la señal temporal de orden de venta SOS001L12P** Este análisis cubre los datos de ventas del producto SOS001L12P desde el 1 de enero de 2023 hasta el 9 de agosto de 2023. **1. Tendencia del volumen durante la duración:** El volumen de ventas de SOS001L12P muestra una clara y persistente tendencia a la baja durante todo el período analizado. * A principios de enero de 2023, los volúmenes de ventas diarios eran elevados, y los días individuales alcanzaron hasta 21.394 unidades. El promedio móvil de 30 días era de aproximadamente 12.629 al 10 de enero. * A principios de agosto de 2023, el volumen de ventas había disminuido significativamente. El promedio móvil de 30 días se desplomó a aproximadamente 5,165 el 9 de agosto, lo que indica una caída sustancial en la actividad de ventas constante durante el período de ocho meses. **2. Disminuciones persistentes y otros problemas:** * **Disminución persistente:** La disminución constante tanto en las ventas diarias como en los promedios móviles (de 7 y 30 días) de enero a agosto indica claramente una disminución persistente en el volumen de ventas de SOS001L12P. * **Anomalías:** El análisis identificó 14 días específicos clasificados como anomalías. Estos se caracterizaron por volúmenes de ventas inusualmente bajos, ya sea debido a un puntaje Z inferior a -2,0 o a tres días consecutivos de cambio porcentual negativo. Las caídas graves notables incluyen: * 4 de enero de 2023: las ventas cayeron a 10.920,08. * 8 de marzo de 2023: Las ventas registraron un valor excepcionalmente bajo de 200,00. * **Ventas cero:** Hacia el final del período analizado, se registraron casos de ventas cero (por ejemplo, el 8 y 9 de agosto), lo que exacerbó aún más la tendencia a la baja y destacó problemas críticos en el desempeño de las ventas.
Análisis de Señal de Producción
Es importante correlacionar el informe de anomalías de producción para ver si hay una indicación causal de por qué las ventas podrían estar disminuyendo. Para ello, fijamos el siguiente objetivo para el agente:
"realizar análisis de la señal temporal de producción de SOS001L12P, señalando la tendencia, los valores atípicos y cualquier anomalía en las tendencias de volumen"
Se generó un plan de 7 pasos similar al análisis de ventas para calcular tendencias y valores atípicos, pero también para visualizar anomalías generadas por el modelo de detección de anomalías.
Aquí está el plan [ { "step_id": 1, "name": "Cargar datos de producción para SOS001L12P", "description": "Cargue el archivo 'Production .csv' desde 'C:\AnomalyGNN\dataset\Raw Dataset\Temporal Data\Unit\' en un DataFrame de pandas. Seleccione solo las columnas 'Fecha' y 'SOS001L12P' para análisis.", "type": "CODE" }, { "step_id": 2, "name": "Limpiar y preparar datos de producción", "description": "Convierta la columna 'Fecha' en objetos de fecha y hora y configúrela como índice del marco de datos. Asegúrese de que la columna 'SOS001L12P' sea numérica. Maneje cualquier valor faltante en 'SOS001L12P' completando con 0, asumiendo que los datos de producción faltantes significan cero unidades producidas". }, { "step_id": 3, "name": "Calcular promedios móviles para la tendencia", "description": "Calcule un promedio móvil de 7 y 30 días para el volumen de producción 'SOS001L12P'. Estos promedios móviles ayudarán a visualizar e identificar tendencias a corto y largo plazo en los datos.", "type": "CODE" }, { "step_id": 4, "name": "Visualizar el volumen de producción y Tendencias", "description": "Cree un gráfico de líneas de serie temporal que muestre el volumen de producción diario 'SOS001L12P'. Superponga los promedios móviles de 7 y 30 días en el mismo gráfico para representar visualmente la tendencia. Asegúrese de que los ejes tengan un etiquetado adecuado y un título claro.", "type": "CODE" }, { "step_id": 5, "name": "Detectar valores atípicos usando Z-Score", "description": "Calcular el Puntuación Z para cada punto de datos en el volumen de producción 'SOS001L12P' Identifique posibles valores atípicos marcando los puntos de datos en los que la puntuación Z absoluta supera un umbral predefinido (por ejemplo, |Puntuación Z| > 2,5 o 3. Almacene las fechas y los valores de estos valores atípicos.", "type": "CODE" }, { "step_id": 6, "name": "Visualizar valores atípicos y anomalías", "description": "Genere un gráfico de líneas de serie temporal del volumen de producción 'SOS001L12P'. En este gráfico, marque o coloree claramente los puntos de datos que se identificaron como valores atípicos en el paso anterior para resaltar anomalías en las tendencias del volumen.", "type": "CODE" }, { "step_id": 7, "name": "Resumir tendencias, valores atípicos y anomalías", "description": "Proporcione un resumen textual de la tendencia general observada (por ejemplo, aumento, decreciente, estable, estacional), describir las características de los valores atípicos identificados (por ejemplo, magnitud, frecuencia, fechas específicas) y comentar cualquier anomalía notable en los patrones de volumen de producción basados en las visualizaciones y el análisis estadístico.", "type": "TEXT" } ]
Se crearon, ejecutaron herramientas apropiadas y se produjeron resultados. A continuación se muestra el gráfico de tendencias de producción y, lo que es más importante, el gráfico que muestra un número importante de anomalías en la segunda mitad del período, que podrían estar impactando las ventas.
Así se constata en el informe generado:
"A pesar de la falta de valores atípicos de puntuación Z, un método de detección de anomalías más sofisticado **identificó 17 puntos de datos anómalos** en la producción SOS001L12P".
Informe completo aquí Aquí hay un análisis de la señal temporal de producción para SOS001L12P: **1. Resumen de datos:** Los datos de producción de SOS001L12P se cargaron y preprocesaron exitosamente, cubriendo 221 días desde el 1 de enero de 2023 hasta el 9 de agosto de 2023. La columna 'Fecha' se analizó correctamente y se confirmó que la columna de volumen de producción 'SOS001L12P' era numérica y no faltaban valores. **2. Análisis de tendencias:** * **Promedios móviles:** Se calcularon promedios móviles de 7 y 30 días para suavizar las fluctuaciones diarias y resaltar las tendencias subyacentes. * El gráfico `SOS001L12P_production_trends.png` (guardado en `C://Auto-agent/workspace/output`) representa visualmente el volumen de producción diario junto con estos promedios móviles, lo que permite observar la tendencia temporal general. * Mirando al final de los datos, los promedios móviles de 7 y 30 días muestran una disminución general en el volumen de producción hacia el final del período observado (principios de agosto), con el promedio de 30 días cayendo de 5582,97 el 7 de agosto a 5075,73 el 9 de agosto, y el promedio de 7 días cayendo de 3724,71 a 2911,00 en el mismo período. **3. Valores atípicos (método de puntuación Z):** * Utilizando un umbral de puntuación Z de |puntuación Z| > 2,5, **no se identificaron posibles valores atípicos** en los datos de producción de SOS001L12P. Esto sugiere que, si bien puede haber variaciones, ningún punto de datos individual se desvió significativamente de la media (7480,90) en más de 2,5 desviaciones estándar (4729,55). **4. Anomalías en las tendencias de volumen:** * A pesar de la falta de valores atípicos de puntuación Z, un método de detección de anomalías más sofisticado **identificó 17 puntos de datos anómalos** en la producción SOS001L12P. * Estas anomalías se visualizan en el gráfico `SOS001L12P_production_with_anomalies_plot.png` (guardado en `C://Auto-agent/workspace/output`), que resaltaría fechas específicas en las que el volumen de producción mostró un comportamiento inusual en comparación con su patrón típico. Una caída significativa a 0 el 9 de agosto, por ejemplo, probablemente sea una de esas anomalías, lo que sugiere una interrupción o una reducción severa de la producción.
Informe del planificador de suministro de extremo a extremo
Ahora que hemos realizado un análisis espacio-temporal en el SKU SOS001L12P, el siguiente paso lógico es correlacionar los hallazgos con el modelo de pronóstico de demanda para ver cómo se adapta a las tendencias. Y prepare un informe completo sobre el estado de este SKU que el planificador puede llevar a la gestión.
Para ello nos planteamos el siguiente objetivo:
"Soy un planificador de la cadena de suministro. Me gustaría que considerara el análisis anterior que realizó recientemente junto con otras fuentes de datos y creara un informe de principio a fin sobre SOS001L12P. Noté que la producción tiene una tendencia a la baja en la segunda mitad del período y que hay muchas anomalías durante este período. Correlacione la producción con el pronóstico de la demanda y comente cómo se está desempeñando nuestro modelo de pronóstico durante el período".
El planificador generó un plan para correlacionar el pronóstico de producción, ventas y demanda, evaluar el desempeño del modelo de pronóstico utilizando la métrica principal WAPE (error porcentual absoluto ponderado) y luego preparar un informe completo.
Aquí está el plan [ { "step_id": 1, "name": "Cargar y consolidar datos de SOS001L12P", "description": "Cargar los siguientes conjuntos de datos para SOS001L12P: n1. Promedios móviles de producción: C:\Auto-agent\workspace\output\production análisis – 2\production_rolling_averages_SOS001L12P.csv (columnas: Fecha, SOS001L12P, SOS001L12P_7_day_avg, SOS001L12P_30_day_avg)n2. Puntuaciones Z de producción: C:\Auto-agent\workspace\output\production análisis – 2\SOS001L12P_production_z_scores.csv (columnas: Fecha, Actual_Production, Z_Score)n3. Resultados de la detección de anomalías: C:\AnomalyGNN\results\top_sku_SOS001L12P_predictions.csv (columnas: Fecha, Is_Anomaly)n4. C:\GNN\results\demand_vs_production_SOS001L12P.csv (columnas: Fecha, Demanda_predicha, Ventas_actuales, Producción_actual)nnFusione todos estos marcos de datos en la columna 'Fecha', asegurándose de que 'Fecha' se convierta a un formato de fecha y hora para un análisis preciso de series de tiempo.", "type": "CODE" }, { "step_id": 2, "name": "Analizar y visualizar tendencias y anomalías de producción", "description": "Cree un gráfico de líneas de serie temporal que muestre la 'Product_Actual' para SOS001L12P, superpuesto con 'SOS001L12P_7_day_avg' y 'SOS001L12P_30_day_avg'. Resalte los puntos donde 'Is_Anomaly' es Verdadero (de top_sku_SOS001L12P_predictions.csv) o donde 'Z_Score' excede un cierto umbral (por ejemplo, |Z_Score| > 2 o 3) para confirmar visualmente la observación por parte del usuario de una tendencia a la baja y anomalías en la segunda mitad de la duración. Identifique la fecha de inicio de la 'segunda mitad' según el rango de tiempo de los datos.", "type": "CODE" }, { "step_id": 3, "name": "Correlacionar pronóstico de producción, ventas y demanda", "description": "Genere un gráfico lineal de serie temporal único que compare 'Product_Actual', 'Actual_Sales' y 'Predicted_Demand' para SOS001L12P. Analice la correlación visual y observe los períodos de divergencia o alineación significativa, especialmente durante la 'segunda mitad' identificada, donde se observaron anomalías de producción y tendencias a la baja.", "type": "CODE" }, { "step_id": 4, "name": "Evaluar el rendimiento del modelo de pronóstico (WAPE)", "description": "Calcule el error porcentual promedio ponderado (WAPE) para la 'demanda_predicha' contra las 'ventas_actuales' para SOS001L12P usando los datos consolidados. Calcule WAPE para toda la duración y por separado para la 'segunda mitad' de la duración (como se identifica en el Paso 2) para evaluar cómo se desempeñó el modelo durante el período de problemas de producción observados. Presente los valores de WAPE e interpretar su significado con respecto a la precisión del pronóstico.", "type": "CODE" }, { "step_id": 5, "name": "Generar un informe completo de principio a fin para SOS001L12P", "description": "Proporcionar un informe narrativo que resuma todos los hallazgos n1. Confirmar la tendencia a la baja observada en la producción de SOS001L12P durante la segunda mitad de la duración, citando fechas o períodos específicos. observación del usuario de muchas anomalías, proporcionando un recuento o resaltando fechas clave de anomalías. n3. Discuta la correlación entre la producción real, las ventas reales y la demanda prevista, explicando cómo interactúan, especialmente durante la segunda mitad problemática. n4. Ofrezca información sobre las posibles razones de las tendencias o anomalías observadas y su impacto en el suministro. planificación en cadena.", "tipo": "TEXTO" } ]
El análisis combinado produce una evaluación lista para el planificador, que señala en su conclusión:
"Para SKU SOS001L12P, la segunda mitad de la duración analizada (21 de abril de 2023 – 9 de agosto de 2023) se caracterizó por una mayor volatilidad y una tendencia a la baja en la producción real, acompañada de numerosas anomalías. La producción real durante este período también fue menor que las ventas reales. Si bien el modelo de pronóstico de demanda capturó efectivamente las tendencias de las ventas reales (WAPE del 29,70 % en la segunda mitad, lo que muestra una mejora con respecto al total) 35,44%), la producción tuvo dificultades para alinearse con estas demandas, lo que generó correlaciones débiles entre la producción y las ventas y la demanda prevista. Estas divergencias, que a menudo coinciden con anomalías de producción identificadas, sugieren posibles limitaciones de suministro o interrupciones operativas que afectan nuestra capacidad para satisfacer la demanda de manera consistente.
El informe completo está aquí Aquí hay un informe de extremo a extremo para SKU SOS001L12P, considerando sus observaciones y los análisis recientes. — ### **Informe de extremo a extremo: Análisis SKU SOS001L12P (2023-01-01 a 2023-08-09)** **1. Descripción general** Este informe sintetiza datos recientes de análisis de producción, detección de anomalías y pronóstico de demanda para SKU SOS001L12P, que cubren el período comprendido entre el 1 de enero de 2023 y el 9 de agosto de 2023. El análisis se centra específicamente en las tendencias y el rendimiento del modelo durante la segunda mitad de este período, a partir aproximadamente del 21 de abril de 2023. **2. Tendencias y anomalías de producción** El análisis confirma su observación con respecto a las tendencias de producción en la segunda mitad del período (desde el 21 de abril de 2023). * **Tendencia a la baja y volatilidad**: si bien la serie temporal generalmente muestra una correlación visual positiva entre la producción real, las ventas reales y la demanda prevista, la producción real parece ser más volátil y muestra caídas más pronunciadas en comparación con las ventas reales y la demanda prevista en ciertos segmentos de la segunda mitad. * **Producción vs. Ventas**: En el segundo semestre, la producción real (promedio de 4866 unidades) fue notablemente inferior a las ventas reales (promedio de 5136 unidades). * **Anomalías**: se identificaron un total de 17 puntos de anomalía combinados (basados en 'Is_Anomaly=True' o |Z_Score| > 2,5) en todo el conjunto de datos. Varias de estas anomalías de producción se detectaron en el segundo semestre, concretamente en fechas como 2023-04-21, 2023-05-05, 2023-05-21, 2023-05-22 y 2023-05-23. Estos períodos de anomalía a menudo coinciden con divergencias significativas en las que la producción real se desvía marcadamente de las ventas reales y la demanda prevista. **3. Correlación: producción, pronóstico de demanda y ventas** El análisis de correlación en la segunda mitad de la duración (desde el 21 de abril de 2023) revela relaciones distintas: * **Fuerte correlación entre ventas y demanda**: las ventas reales y la demanda prevista muestran una fuerte correlación positiva de **0,85**. Esto sugiere que el modelo de pronóstico es generalmente efectivo para rastrear patrones de ventas reales. * **Correlación de producción débil**: la correlación de la producción real con las ventas reales y la demanda prevista es significativamente más débil: * Producción real frente a las ventas reales: **0,35** * Producción real frente a la demanda prevista: **0,38** * **Divergencia**: a pesar de una correlación visual general a lo largo de todo el período, la segunda mitad muestra períodos notables en los que la producción real diverge de las ventas reales y la demanda prevista. Esto es particularmente evidente durante las anomalías observadas, lo que indica que la producción no se alineó consistentemente con la demanda del mercado o las ventas en estos casos. **4. Rendimiento del modelo de pronóstico de demanda** El rendimiento del modelo de pronóstico se evaluó utilizando el error porcentual promedio ponderado (WAPE): * **Rendimiento general**: el WAPE general para SOS001L12P durante toda la duración es **35,44 %**. * **Rendimiento de la segunda mitad**: para la 'segunda mitad' de la duración (desde el 21 de abril de 2023), el WAPE es **29,70%**. * **Interpretación**: La WAPE del segundo semestre es inferior a la WAPE general. Esto indica que, a pesar de los problemas y anomalías de producción observados durante este período, la precisión del modelo de pronóstico de la demanda en realidad **mejoró** en la segunda mitad. La demanda prevista del modelo sigue de cerca de forma constante las ventas reales, lo que sugiere que es razonablemente eficaz para capturar patrones de demanda con fines de planificación. **Conclusión** Para el SKU SOS001L12P, la segunda mitad de la duración analizada (21 de abril de 2023 – 9 de agosto de 2023) se caracterizó por una mayor volatilidad y una tendencia a la baja en la producción real, acompañada de numerosas anomalías. La producción real durante este período también fue menor que las ventas reales. Si bien el modelo de pronóstico de la demanda capturó efectivamente las tendencias de las ventas reales (WAPE del 29,70% en el segundo semestre, lo que muestra una mejora con respecto al 35,44% general), la producción tuvo dificultades para alinearse con estas demandas, lo que generó correlaciones débiles entre la producción y las ventas y la demanda prevista. Estas divergencias, que a menudo coinciden con anomalías de producción identificadas, sugieren posibles limitaciones de suministro o interrupciones operativas que afectan nuestra capacidad para satisfacer la demanda de manera consistente.
Este es un informe de nivel de producción que consta de hechos, cifras y KPI para respaldar las interpretaciones derivadas.
Y todo esto se logró con un marco de agencia completamente flexible que puede adaptarse a cualquier objetivo de explicabilidad deseado.
Desarrollar y probar esta aplicación, además de generar los informes y resultados anteriores, cuesta menos de $1 en uso de tokens.
Conclusión
El futuro de los sistemas agentes no son catálogos de herramientas más grandes ni marcos de orquestación más elaborados. Son los agentes los que pueden decidir qué debe existir en primer lugar.
Cuando la planificación, la codificación y la ejecución se tratan como pasos de razonamiento, las herramientas dejan de ser activos estáticos y se convierten en artefactos desechables: creados, utilizados y descartados según lo exige el problema. Esto aleja el diseño de agentes de la ingeniería rápida que intenta vincular los agentes y las herramientas al marco de orquestación hacia la generación de software como una capacidad central.
La arquitectura plan-código-ejecución demuestra que el análisis basado en evidencia de grado de producción puede surgir de agentes pequeños y transparentes con un código mínimo de pegamento y un costo mínimo. A medida que los LLM sigan mejorando, los agentes más valiosos serán aquellos que puedan convertir de forma autónoma la intención en software funcional, sin que se les diga de antemano cómo hacerlo.
En ese sentido, los agentes de planificación y codificación automáticas no son sólo una conveniencia. Son una evolución natural de los sistemas agentes.
Para obtener más información sobre el modelo GNN para el pronóstico de la demanda al que se hace referencia en este artículo, lea mi artículo aquí.
Conéctese conmigo y comparta sus comentarios en www.linkedin.com/in/partha-sarkar-lets-talk-AI
Referencia
SupplyGraph: un conjunto de datos de referencia para la planificación de la cadena de suministro utilizando redes neuronales gráficas: Autores: Azmine Toushik Wasi, MD Shafikul Islam, Adipto Raihan Akib
Las imágenes utilizadas en este artículo se generan con Google Gemini. Gráficos y código subyacente creados por mí.