IA: Del código generado a la verificación automatizada

Fuentes: Toward automated verification of unreviewed AI-generated code - Peter Lavigne

El artículo de Peter Lavigne explora una nueva aproximación para integrar código generado por IA en entornos de producción, cambiando el enfoque de la revisión manual línea por línea a la verificación automatizada. La idea central es que, aunque la IA puede generar código rápidamente, la confianza en ese código para su uso en producción requiere un nivel de validación más allá de la simple inspección visual.

Tradicionalmente, los desarrolladores revisan el código generado por IA para detectar errores y asegurar su calidad. Lavigne propone un proceso alternativo donde el código generado se somete a una serie de verificaciones automatizadas. En su experimento con el problema de FizzBuzz, utilizó cuatro métodos principales: (1) Pruebas basadas en propiedades: Estas pruebas, a diferencia de las pruebas tradicionales que verifican resultados específicos para entradas específicas, evalúan si el código cumple con propiedades generales a través de una amplia gama de entradas aleatorias. Por ejemplo, verifica que la función FizzBuzz siempre devuelva el resultado correcto para múltiplos de 3 y 5, sin importar su tamaño. (2) Pruebas de mutación: Este método introduce pequeños cambios (mutaciones) en el código generado y luego ejecuta las pruebas existentes. Si las pruebas fallan, indica que el código original era dependiente de la mutación y, por lo tanto, no era robusto. (3) Ausencia de efectos secundarios: Se asegura de que el código generado no realice acciones inesperadas o modifique el estado del sistema de forma no controlada. (4) Verificación de tipos y linting: Aunque comunes en Python, estas comprobaciones aseguran la corrección sintáctica y la adherencia a las convenciones de estilo.

Este enfoque permite a Lavigne confiar en el código generado por IA sin una revisión manual exhaustiva. Reconoce que puede existir un pequeño espacio de código inválido que pasa las pruebas, pero considera que es pequeño y difícil de alcanzar accidentalmente. Además, desafía la noción de que el código generado por IA debe ser legible y mantenible, sugiriendo que puede tratarse como código compilado.

Aunque la configuración inicial de estas verificaciones puede ser más costosa que la simple revisión manual, Lavigne anticipa que a medida que las herramientas de IA y los agentes de codificación mejoren, esta diferencia se reducirá. El repositorio fizzbuzz-without-human-review proporciona un ejemplo práctico de cómo implementar estas verificaciones en Python. La clave es pasar de una cultura de revisión a una de verificación automatizada para acelerar el desarrollo y la adopción de código generado por IA.