Las "Personalidades" de los Modelos de IA Impactan Calidad y Seguridad del Código
Los modelos de IA generativa diseñados para asistir en la codificación exhiben “personalidades” distintas que influyen profundamente en la calidad, seguridad y mantenibilidad del código que producen. Si bien estos modelos comparten fortalezas y debilidades fundamentales, los matices de sus estilos de codificación individuales conducen a resultados variados, incluyendo la generación de “malos olores de código” (code smells) problemáticos, patrones de diseño indicativos de problemas estructurales más profundos.
Comprender estas características únicas es crucial para los desarrolladores de software que aprovechan los grandes modelos de lenguaje (LLMs) para asistencia, según Sonar, una firma de calidad de código. Tariq Shaukat, CEO de Sonar, enfatizó la necesidad de mirar más allá del rendimiento bruto para comprender el espectro completo de las capacidades de un modelo. Afirmó que reconocer las fortalezas de cada modelo y su propensión a errores es esencial para una implementación segura.
Sonar probó recientemente cinco LLMs prominentes: Claude Sonnet 4 y 3.7 de Anthropic; GPT-4o de OpenAI; Llama 3.2 90B de Meta; y el OpenCoder-8B de código abierto. La evaluación involucró 4.442 tareas de programación Java, abarcando una variedad de desafíos diseñados para evaluar la competencia en codificación. Los hallazgos, publicados en un informe titulado “Las personalidades de codificación de los LLMs líderes”, se alinean en gran medida con el sentimiento general de la industria: los modelos de IA generativa son herramientas valiosas cuando se utilizan junto con una rigurosa supervisión y revisión humana.
Los LLMs probados demostraron diferentes niveles de competencia en los puntos de referencia estándar. Por ejemplo, en el punto de referencia HumanEval, Claude Sonnet 4 logró una impresionante tasa de aprobación del 95,57%, mientras que Llama 3.2 90B se quedó atrás con un 61,64%. El sólido rendimiento de Claude sugiere una alta capacidad para generar código válido y ejecutable. Además, modelos como Claude 3.7 Sonnet (72,46% de soluciones correctas) y GPT-4o (69,67%) mostraron destreza técnica en tareas que requerían la aplicación de algoritmos y estructuras de datos, y demostraron ser capaces de transferir conceptos entre diferentes lenguajes de programación.
A pesar de estas fortalezas, el informe destacó un defecto crítico compartido: una omnipresente falta de conciencia de seguridad. Todos los LLMs evaluados produjeron un porcentaje inquietantemente alto de vulnerabilidades, frecuentemente con las calificaciones de gravedad más altas posibles. En una escala que incluye “Bloqueador”, “Crítico”, “Mayor” y “Menor”, las vulnerabilidades generadas fueron predominantemente de nivel “Bloqueador”, lo que significa que podrían causar un fallo en la aplicación. Para Llama 3.2 90B, más del 70% de sus vulnerabilidades fueron clasificadas como “Bloqueador”; una cifra que fue del 62,5% para GPT-4o; y casi el 60% para Claude Sonnet 4.
Los fallos más comunes incluyeron el recorrido de ruta y las vulnerabilidades de inyección, que representaron el 34,04% de los problemas en el código generado por Claude Sonnet 4, seguidos de credenciales codificadas, configuraciones erróneas de criptografía e inyección de entidades externas XML. Esta dificultad con los fallos de inyección se debe a la incapacidad de los modelos para rastrear eficazmente el flujo de datos no confiables a partes sensibles del código, un análisis no local complejo que va más allá de su alcance de procesamiento típico. Además, a menudo generan secretos codificados porque tales fallos están presentes en sus datos de entrenamiento. Al carecer de una comprensión integral de las normas de ingeniería de software, estos modelos también descuidaron con frecuencia el cierre de flujos de archivos, lo que llevó a fugas de recursos, y exhibieron un sesgo hacia un código desordenado, complejo y difícil de mantener, caracterizado por numerosos “malos olores de código”.
El análisis de Sonar reveló “personalidades” distintas para cada modelo:
Claude 4 Sonnet se ganó el apodo de “el arquitecto sénior” debido a su habilidad excepcional, aprobando el 77,04% de las pruebas de referencia. Su resultado es típicamente prolijo y altamente complejo, reflejando la tendencia de un ingeniero experimentado a implementar salvaguardas sofisticadas, manejo de errores y características avanzadas.
GPT-4o fue apodado “el generalista eficiente”, descrito como un desarrollador confiable y equilibrado. Si bien generalmente evita los errores más graves, es propenso a cometer errores de flujo de control.
OpenCoder-8B emergió como “el prototipador rápido”. Produce el código más conciso, generando la menor cantidad de líneas, pero también exhibe la mayor densidad de problemas, con 32,45 problemas por cada mil líneas de código.
Llama 3.2 90B fue calificada como “la promesa incumplida”, marcada por una tasa de aprobación de referencia mediocre del 61,47% y un alarmantemente alto 70,73% de vulnerabilidades de gravedad “Bloqueador”.
Finalmente, Claude 3.7 Sonnet fue nombrado “el predecesor equilibrado”. Cuenta con una tasa de aprobación de referencia capaz del 72,46% y una alta densidad de comentarios (16,4%). A pesar de sus fortalezas, este modelo también produce una proporción significativa de vulnerabilidades de gravedad “Bloqueador”. Curiosamente, mientras que Claude 4 Sonnet es un modelo más nuevo y se desempeña mejor en los puntos de referencia generales, las vulnerabilidades de seguridad que crea tienen casi el doble de probabilidades de ser de gravedad “Bloqueador” en comparación con su predecesor.
Dados estos desafíos inherentes, el informe de Sonar concluye que una gobernanza robusta y un análisis exhaustivo del código no son meramente aconsejables, sino imperativos para verificar el código generado por IA.