Code Task Agent
El componente Code Task Agent actúa como un programador virtual inteligente dentro de tu sistema Nappai. Su propósito principal es ayudarte a resolver problemas de datos, generar gráficos o automatizar procesos complejos escribiendo y ejecutando código por ti mismo.
En lugar de tener que escribir programación manualmente, tú simplemente le describes lo que necesitas hacer (por ejemplo, “calcula el promedio de ventas por región”). El agente entenderá tu solicitud, escribirá el código necesario (ya sea en Python o Node.js), lo ejecutará de forma segura y te devolverá los resultados o el código final. Es como tener un experto en programación trabajando en un laboratorio aislado y seguro para asegurar que todo funcione correctamente sin riesgos.
¿Cómo funciona?
El funcionamiento de este agente se basa en un proceso iterativo (por pasos) dentro de un entorno virtual seguro llamado “Sandbox” de Docker. Aquí te explicamos el flujo de manera sencilla:
- Entorno Seguro: Cuando activas este componente, se crea un contenedor virtual aislado. Esto garantiza que el código que se ejecuta no afecte a tu computadora ni a otros datos del sistema. Es un espacio de trabajo limpio y protegido.
- Comprensión de la Tarea: El agente lee tus instrucciones y decide qué lenguaje de programación usar (Python o Node.js) y qué pasos son necesarios para cumplir con tu petición.
- Escritura y Ejecución: El agente escribe un fragmento de código y lo ejecuta inmediatamente dentro del contenedor.
- Verificación y Corrección: Si el código tiene errores o el resultado no es el esperado, el agente analiza el error, corrige el código y lo vuelve a ejecutar. Este ciclo se repite automáticamente hasta que la tarea se completa satisfactoriamente o hasta que alcanza un límite de intentos.
- Entrega de Resultados: Una vez terminado, te proporciona el código final que funcionó, la salida de los datos generados y un historial de lo que sucedió paso a paso.
Conexión y Credenciales
Este componente no requiere la configuración de credenciales externas (como APIs de terceros), ya que opera con recursos locales del sistema y librerías estándar. Sin embargo, asegúrate de tener los permisos adecuados en tu entorno de Nappai para la ejecución de contenedores si tu administrador de sistema ha restringido estas capacidades.
Operaciones
Este componente es un agente autónomo y no tiene “operaciones” individuales seleccionables como un menú desplegable. Su funcionalidad está determinada completamente por las instrucciones que le proporciones en el campo de entrada. Simplemente conecta el flujo y describe la tarea en el campo Instructions.
Entradas
Campos de Entrada
Los siguientes campos están disponibles para configurar este componente. Cada campo puede estar visible en diferentes operaciones:
-
Instructions: Explicación en español de qué es y para qué sirve. Este es el campo más importante; aquí escribes la tarea que deseas que el agente resuelva (ej. “Crea un gráfico de barras con los datos del archivo CSV”).
- Visible en: Todas las configuraciones del agente
-
Initial Code: Explicación en español de qué es y para qué sirve. Código inicial opcional. Úsalo si ya tienes un código base sobre el cual quieres que el agente haga ajustes o mejoras. Si lo dejas vacío, el agente comenzá desde cero.
- Visible en: Configuraciones avanzadas
-
Max Iterations: Explicación en español de qué es y para qué sirve. Un número que limita cuántos intentos puede hacer el agente antes de detenerse. Útil para evitar bucles infinitos si el agente tiene dificultades para resolver la tarea. Por defecto, suele estar configurado para unos 5 a 10 intentos.
- Visible en: Configuraciones avanzadas
-
Sandbox Configuration: Explicación en español de qué es y para qué sirve. Ajustes avanzados sobre el entorno virtual, como el límite de tiempo o memoria. Generalmente se deja en los valores por defecto para un rendimiento óptimo.
- Visible en: Configuraciones avanzadas
Salidas
Este componente devuelve varios resultados útiles que puedes utilizar en el resto de tu flujo de trabajo:
- Agent: El agente listo para usarse en nodos subsequentes que acepten agentes.
- Response: La respuesta final procesada, que puede contener datos, mensajes de éxito o errores detallados.
- Final Code: El código definitivo que logró resolver la tarea. Puedes usarlo para guardar o auditar la lógica creada.
- Execution Output: La salida textual de la ejecución (resultados de consola, prints, etc.). Ideal para ver los datos generados.
- Iteration History: Un registro detallado de todos los intentos y correcciones realizadas. Muy útil si necesitas auditar cómo se llegó al resultado final.
- Execution Status: El estado final de la ejecución (ej. “success”, “failed”, “timeout”).
Ejemplo de Respuesta JSON
json { “status”: “success”, “execution_output”: “Promedio de ventas: $15,230.50\nGráfico guardado en /output/chart.png”, “final_code”: “import pandas as pd\ndf = pd.read_csv(‘sales.csv’)\navg = df[‘sales’].mean()\nprint(f’Promedio: ${avg}’)”, “iteration_history”: [ { “attempt”: 1, “code”: “import pandas as pd\ndf = pd.read_csv(‘sales.csv’)\navg = df[‘sales’].mean()\nprint(avg)”, “output”: “15230.5”, “error”: null }, { “attempt”: 2, “code”: “import pandas as pd\ndf = pd.read_csv(‘sales.csv’)\navg = df[‘sales’].mean()\nprint(f’Promedio: ${avg}’)”, “output”: “Promedio: $15230.50”, “error”: null } ] }
Conectividad
Este componente suele conectarse de la siguiente manera en un flujo de trabajo:
- Entrada (Instrucciones): Se conecta a nodos anteriores que provean contexto, como un nodo de “Read File” (Leer Archivo) para dar al agente los datos necesarios, o a un nodo de “Text” con la descripción de la tarea.
- Salida (Execution Output / Final Code): Se conecta a nodos posteriores como:
- Save File: Para guardar los gráficos o resultados generados (CSV, PNG).
- Send Email / Slack: Para notificar al equipo sobre los resultados obtenidos.
- Another Agent: Para pasar los datos procesados a otro agente que realice un análisis más profundo.
Es el punto central donde la inteligencia de la IA se transforma en datos o acciones concretas.
Ejemplo de Uso
Escenario: Necesitas analizar un archivo de ventas llamado ventas_2023.csv y obtener el total de ingresos por cada categoría de producto.
-
Configura el flujo:
- Añade un nodo “Read CSV” que lea tu archivo
ventas_2023.csv. - Conecta la salida de datos de este nodo al campo Instructions del Code Task Agent.
- En las instrucciones, escribe: “Calcula el total de ingresos agrupado por categoría de producto y muéstralo en formato de tabla.”
- Añade un nodo “Read CSV” que lea tu archivo
-
Ejecución:
- El agente leerá los datos, escribirá el código Python necesario para hacer el
groupby, lo ejecutará y devolverá el resultado.
- El agente leerá los datos, escribirá el código Python necesario para hacer el
-
Resultado:
- Podrás usar la salida Execution Output para mostrar la tabla en un dashboard o guardarla en un nuevo archivo.
Plantillas
[Esta sección se omite ya que no hay plantillas predefinidas específicas listadas en la información técnica]
Componentes Relacionados
[Esta sección se omite ya que no hay componentes vinculados específicos listados en la información técnica]
Notas Importantes
[Esta sección se omite ya que no hay notas de usuario críticas listadas en la información técnica]
Consejos y Mejores Prácticas
- Sé específico en las instrucciones: Cuanto más clara sea la descripción de la tarea, mejor será el código generado. Evita ambigüedades.
- Verifica el historial: Si el agente falla, revisa la salida Iteration History para entender en qué paso ocurrió el error y ajustar tus instrucciones.
- Limita las iteraciones si es necesario: Si una tarea es simple, no necesitas muchas iteraciones. Puedes reducir Max Iterations para ahorrar recursos, aunque el valor por defecto suele ser seguro.
- Usa el código inicial: Si ya tienes una base de código confiable, utilízala en Initial Code para que el agente no tenga que empezar desde cero, lo que puede ahorrar tiempo y reducir errores.
Consideraciones de Seguridad
- Entorno Aislado: Este componente ejecuta el código en un contenedor Docker aislado, lo que minimiza el riesgo de que el código afecte a tu sistema principal.
- Límites de Tiempo y Memoria: El sistema tiene protecciones contra bucles infinitos o el uso excesivo de memoria (configuradas en Sandbox Configuration), lo que garantiza estabilidad.
- Validación de Entradas: Asegúrate de que las instrucciones no contengan datos sensibles que no deban ser procesados, aunque el entorno es seguro, es buena práctica seguir las normas de seguridad de datos de tu organización.