Cómo construir un agente de análisis de mantenimiento de flotas local totalmente autónomo utilizando SmolAgents y el modelo Qwen

En este tutorial, recorremos el proceso de creación de un agente de análisis de flotas totalmente autónomo utilizando SmolAgents y un modelo Qwen local. Generamos datos de telemetría, los cargamos a través de una herramienta personalizada y permitimos que nuestro agente razone, analice y visualice los riesgos de mantenimiento sin ninguna llamada API externa. En cada paso de la implementación, vemos cómo el agente interpreta registros estructurados, aplica filtros lógicos, detecta anomalías y finalmente produce una advertencia visual clara para los administradores de flotas. Consulta los CÓDIGOS COMPLETOS aquí.

print(“⏳ Instalando bibliotecas… (aproximadamente 30-60s)”) !pip install smolagents transformadores acelerar bitsandbytes ddgs matplotlib pandas -q importar os importar pandas como pd importar matplotlib.pyplot como plt desde smolagents importar CodeAgent, Tool, TransformersModel

Instalamos todas las bibliotecas necesarias e importamos los módulos principales en los que confiamos para construir nuestro agente. Configuramos SmolAgents, Transformers y herramientas básicas de manejo de datos para procesar la telemetría y ejecutar el modelo local sin problemas. En esta etapa, preparamos nuestro entorno y nos aseguramos de que todo se cargue correctamente antes de seguir adelante. Consulta los CÓDIGOS COMPLETOS aquí.

flota_data = { “truck_id”: [“T-101”, “T-102”, “T-103”, “T-104”, “T-105″]”conductor”: [“Ali”, “Sara”, “Mike”, “Omar”, “Jen”]”avg_speed_kmh”: [65, 70, 62, 85, 60]”eficiencia_combustible_kml”: [3.2, 3.1, 3.3, 1.8, 3.4]”motor_temp_c”: [85, 88, 86, 105, 84]”últimos_días_de_mantenimiento”: [30, 45, 120, 200, 15]
} df = pd.DataFrame(fleet_data) df.to_csv(“fleet_logs.csv”, index=False) print(“✅ ‘fleet_logs.csv’ creado.”)

Generamos el conjunto de datos de flota ficticia que nuestro agente analizará posteriormente. Creamos un conjunto pequeño pero realista de campos de telemetría, lo convertimos en un DataFrame y lo guardamos como un archivo CSV. Aquí, establecemos la fuente de datos central que impulsa el razonamiento y las predicciones del agente. Consulta los CÓDIGOS COMPLETOS aquí.

clase FleetDataTool(Tool): nombre = “load_fleet_logs” descripción = “Carga registros de telemetría del vehículo desde ‘fleet_logs.csv’. Devuelve el resumen de datos.” inputs = {} tipo_salida = “string” def forward(self): prueba: df = pd.read_csv(“fleet_logs.csv”) return f”Columnas: {list(df.columns)}\nData Sample:\n{df.to_string()}” excepto excepción como e: return f”Error al cargar registros: {e}”

Definimos FleetDataTool, que actúa como puente entre el agente y el archivo de telemetría subyacente. Le damos al agente la capacidad de cargar e inspeccionar el archivo CSV para comprender su estructura. Esta herramienta se convierte en la base de cada análisis posterior que realiza el modelo. Consulta los CÓDIGOS COMPLETOS aquí.

print(“⏳ Descarga y carga del modelo local (aproximadamente 60-90 s)…”) model = TransformersModel( model_id=”Qwen/Qwen2.5-Coder-1.5B-Instruct”, device_map=”auto”, max_new_tokens=2048 ) print(“✅ Modelo cargado en GPU.”) agent = CodeAgent( tools=[FleetDataTool()]model=model, add_base_tools=True ) print(“\n🤖 El agente está analizando los datos de la flota… (Verifique el resultado del ‘Agente’ a continuación)\n”) query = “”” 1. Cargue los registros de la flota. 2. Encuentre el camión con la peor eficiencia de combustible (‘fuel_efficiency_kml’ más bajo). 3. Para ese camión, verifique si está atrasado en mantenimiento (el umbral es 90 días). 4. Cree un gráfico de barras que compara el ‘fuel_efficiency_kml’ de TODOS los camiones 5. Resalte el peor camión en ROJO y otros en GRIS en el gráfico 6. Guarde el gráfico como ‘maintenance_alert.png’ respuesta = agent.run(query) print(f”\n📝 INFORME FINAL: {respuesta}”).

Cargamos el modelo local Qwen2.5 e inicializamos nuestro CodeAgent con la herramienta personalizada. Luego, elaboramos una consulta detallada que describe los pasos de razonamiento que queremos que siga el agente y la ejecutamos de un extremo a otro. Aquí es donde observamos al agente pensar, analizar, calcular e incluso trazar, de forma totalmente autónoma. Consulta los CÓDIGOS COMPLETOS aquí.

if os.path.exists(“maintenance_alert.png”): print(“\n📊 Mostrando gráfico generado:”) img = plt.imread(“maintenance_alert.png”) plt.figure(figsize=(10, 5)) plt.imshow(img) plt.axis(‘off’) plt.show() else: print(“⚠️ No se encontró ninguna imagen del gráfico. Verifique los registros del agente arriba.”)

Verificamos si el agente guardó exitosamente el cuadro de mantenimiento generado y lo mostramos si está disponible. Visualizamos el resultado directamente en el cuaderno, lo que nos permite confirmar que el agente realizó correctamente el análisis y el trazado de datos. Esto nos brinda un resultado limpio e interpretable de todo el flujo de trabajo.

En conclusión, construimos un canal inteligente de extremo a extremo que permite que un modelo local cargue datos de forma autónoma, evalúe el estado de la flota, identifique el vehículo de mayor riesgo y genere un cuadro de diagnóstico para obtener información procesable. Somos testigos de la facilidad con la que podemos extender este marco a conjuntos de datos del mundo real, integrar herramientas más complejas o agregar capacidades de razonamiento de varios pasos para casos de uso de seguridad, eficiencia o mantenimiento predictivo. Por fin, apreciamos cómo SmolAgents nos permite crear sistemas agentes prácticos que ejecutan código real, razonan sobre telemetría real y brindan información de inmediato.

Consulta los CÓDIGOS COMPLETOS aquí. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Michal Sutter es un profesional de la ciencia de datos con una Maestría en Ciencias de Datos de la Universidad de Padua. Con una base sólida en análisis estadístico, aprendizaje automático e ingeniería de datos, Michal se destaca en transformar conjuntos de datos complejos en conocimientos prácticos.