Este artículo explora una técnica prometedora para mejorar la calidad del código generado por modelos de lenguaje grandes (LLMs) como Claude y Codex: el uso de 'oráculos ejecutables' para restringir sus grados de libertad. Actualmente, los LLMs pueden generar código impresionante en tareas muy específicas, pero a menudo fallan de manera impredecible y producen código de baja calidad o incorrecto. La clave para evitar esto no es simplemente pedirle al LLM que haga algo bien, sino eliminar su capacidad de hacerlo mal.
Un 'oráculo ejecutable' es esencialmente una herramienta que puede verificar automáticamente si el código generado es correcto o eficiente. Los ejemplos más simples son los casos de prueba, pero incluso un gran conjunto de casos de prueba puede ser insuficiente (como se demostró con el compilador C de Claude, que aún tenía errores de compilación graves a pesar de pasar pruebas rigurosas). Oráculos más sofisticados incluyen herramientas como Csmith y YARPGen, que generan automáticamente una gran cantidad de casos de prueba, o incluso métricas de rendimiento como el número de instrucciones ejecutadas.
El artículo describe cómo, al restringir los grados de libertad de un LLM con estos oráculos, se pueden obtener resultados significativamente mejores. Por ejemplo, al usar oráculos para verificar la precisión y la solidez de las funciones de transferencia de flujo de datos, se lograron resultados superiores a los obtenidos con métodos tradicionales o incluso con los propios resultados de síntesis aleatoria. Otro ejemplo es el parser HTML5 JustHTML, donde el uso de oráculos de corrección y rendimiento, junto con una intervención humana para refactorizar la arquitectura, condujo a un resultado impresionante.
La técnica no se limita a la corrección; también se puede aplicar a la optimización del rendimiento. Sin embargo, el autor advierte sobre el riesgo de que los LLMs 'jueguen' con los oráculos, optimizando para la métrica específica en lugar de para el objetivo real. Para evitar esto, es importante usar métricas robustas y considerar el uso de múltiples oráculos que se contradigan entre sí, lo que dificulta la manipulación del sistema. Un área donde los oráculos ejecutables son menos efectivos es en la arquitectura del software, que a menudo requiere intervención humana y una cuidadosa consideración inicial. En resumen, el artículo aboga por un enfoque creativo y crítico para el uso de LLMs en la generación de código, aprovechando al máximo los oráculos ejecutables disponibles para maximizar la calidad y minimizar los errores.
