- Muchos desarrolladores intentan usar LLM para escribir código, experimentan alucinaciones y pierden la confianza
- Es común que un LLM invente métodos o librerías que no existen
- Pero las alucinaciones en el código son el tipo de alucinación menos peligroso
- Lo más peligroso es cuando el LLM introduce errores que el compilador o el intérprete no detectan de inmediato
- Un método alucinado genera un error en cuanto se ejecuta, por lo que es fácil de detectar
- Incluso se puede volver a pasar el mensaje de error al LLM para que lo corrija automáticamente
- A diferencia de las alucinaciones en texto general, el código puede verificarse contra los hechos mediante su ejecución
- LLM con capacidad de corrección automática de errores
- Herramientas como ChatGPT Code Interpreter y Claude Code ejecutan el código escrito por el LLM, detectan errores y los corrigen por sí solas
- Evaluar código escrito por un LLM sin siquiera ejecutarlo es ineficiente
- Algunos desarrolladores intentan rechazar la tecnología por completo porque el LLM generó métodos alucinados
- Pero para usarla de forma efectiva, el aprendizaje y la experimentación son indispensables
- El autor lleva más de dos años investigando la programación asistida por IA y aún sigue aprendiendo nuevas técnicas
- Las pruebas manuales del código son indispensables
- Que el código se ejecute correctamente no garantiza que haga lo que se esperaba
- Ni la revisión de código ni las pruebas automatizadas pueden verificar por completo la exactitud del código
- Es indispensable ejecutarlo y validarlo directamente
- El código generado por LLM suele ser muy legible, lo que puede hacer que uno baje la guardia
- Lo mismo aplica al código escrito por personas: no debe confiarse en él hasta probarlo directamente
- Cómo reducir las alucinaciones
- Usar otro modelo: elegir un modelo con datos de entrenamiento más abundantes para una plataforma específica
- Ejemplo: Claude 3.7 Sonnet (con thinking mode activado), OpenAI o3-mini-high, GPT-4o (incluyendo Python Code Interpreter)
- Aprovechar el contexto: aunque el LLM no conozca una librería específica, puede aprender el patrón si se le proporciona código de ejemplo
- Elegir tecnología estable: si se eligen librerías antiguas, es más probable que el LLM las maneje mejor
- La importancia de la revisión de código
- Refuta la afirmación de que "si hay que revisar todo el código escrito por un LLM, es más rápido escribirlo uno mismo"
- También podría ser una declaración que revela falta de habilidad para revisar código
- Revisar código generado por LLM puede ser una buena oportunidad para mejorar las propias habilidades
- Bonus: comentarios de Claude 3.7 Sonnet
- El autor pidió a Claude 3.7 Sonnet que revisara un borrador del blog en su "extended thinking mode"
- Le pidió que revisara "si la lógica de este texto resulta convincente, qué podría mejorarse y qué contenido falta"
- Claude ayudó a suavizar el tono del borrador
- Enlace a la conversación con los comentarios de Claude
1 comentarios
Opiniones en Hacker News
El autor estuvo de acuerdo con el artículo anterior, pero no con este
Aunque el código generado por un LLM funcione bien, si uno no es su autor es difícil encontrar bugs o fallas lógicas
El código generado por LLM se ve limpio, pero hace que se invierta más tiempo en QA y en trabajo de limpieza
The Primeagen y Casey Muratori revisaron la salida de los generadores de código LLM más recientes
Otra categoría de error que Simon pasó por alto es la alucinación en la que el modelo olvida funcionalidades
Los métodos alucinados son un obstáculo pequeño, y cuando la gente se queja de eso se asume que dedicó muy poco tiempo a aprender a usar el sistema con eficacia
La alucinación en sí no es el mayor riesgo que plantean los LLM
Solo es menos riesgoso dentro del contexto limitado de los errores de compilación
Se necesita mucho esfuerzo para obtener buenos resultados de un LLM
Experiencia escribiendo código en un centro médico para encontrar la clínica 'principal' de un paciente