Un agente que genera código Python con IA local, lo valida en tres capas y reinyecta sus errores para corregirse
Práctica de la asignatura de Inteligencia Artificial y, con diferencia, el ejercicio académico más ambicioso del portafolio. La pregunta de partida es: ¿puede un programa pedirle código a un modelo de lenguaje, comprobar si sirve y arreglarlo solo cuando no?
El agente pide a Ollama — modelo qwen2.5-coder:7b
corriendo en local — que genere un programa Python, y antes de darlo por bueno lo
somete a tres capas de validación: sintaxis mediante el módulo
ast, seguridad básica contra una lista de operaciones prohibidas, y
funcionamiento real ejecutándolo con subprocess.
El paso que lo convierte en un agente y no en un script es el bucle de realimentación: si la validación falla, el error se analiza, se registra en una memoria y se reinyecta en el siguiente prompt. El modelo recibe su propio fallo como contexto y vuelve a intentarlo.
validar_sintaxis() — parsea el código generado con
el módulo ast de Python. Si no compila, no se ejecuta: el error se
detecta sin riesgo.validar_seguridad_basica() — busca operaciones
prohibidas o peligrosas antes de permitir la ejecución. El modelo no debería generar
nada destructivo, pero confiar en eso sería el error.validar_funcionamiento() — ejecuta el programa con
subprocess y comprueba que hace lo que se pedía. Es la única capa que
verifica la intención, no la forma.validar_codigo() — orquesta las tres en orden, de
la más barata y segura a la más costosa y arriesgada.registrar_error() y
analizar_error_para_memoria() — convierten el fallo en
contexto reutilizable.construir_prompt() — inyecta la memoria de errores
en la siguiente petición al modelo.El proyecto está estructurado como nueve pasos, cada uno un fichero independiente. Se ve con claridad cómo un script mínimo se convierte en un agente con memoria.
ast, seguridad y
ejecución con subprocess.registrar_error(), analizar_error_para_memoria() y
construir_prompt(): el agente empieza a aprender de sus fallos.os.walk(), filtra por
extensión, elige un fichero al azar, lee hasta 4000 caracteres y le pide al modelo
un análisis que guarda en un informe.localhost:11434.ast. Si
falla, ni se intenta ejecutar.subprocess y se
observa el resultado.ast.parse() permite validar sintaxis sin
ejecutar, lo que es la diferencia entre detectar un error y provocar un
desastre.Autor del ejercicio. Práctica individual de la asignatura de Inteligencia Artificial.
Ejercicio académico completado, con las nueve iteraciones en el repositorio de apuntes. Requiere Ollama corriendo en local con el modelo descargado.
Ruta dentro del repositorio: Apuntes/012-Inteligencia artificial/011-Agente
IA/