La paradoja de la caja china

Al llegar a determinados niveles de complejidad o abstracción en programación, se evidencia que la IA Generativa actual no tiene conciencia real de qué te está respondiendo:

«El experimento mental de la habitación china plantea una situación en la que un hablante nativo de inglés, que no sabe chino, está encerrado en una habitación. Dentro de esta habitación, hay un libro de instrucciones en inglés que le permite manipular símbolos chinos sin comprender su significado. Cuando se le envían preguntas en chino desde el exterior, la persona dentro de la habitación puede seguir las instrucciones y devolver respuestas en chino, haciendo que parezca que entiende el idioma. Sin embargo, en realidad, no comprende nada de lo que está haciendo; simplemente está manipulando símbolos de acuerdo con un conjunto de reglas.» (fuente: wikipedia)

Hace unos días recordaba la paradoja de la habitación china, pensando si, aparte de las implicaciones filosóficas, tenía un impacto real en el IA Generativa, y si eso realmente importa, cuando me ha sucedido esta mañana algo curioso:

Solicitaba a Copilot que analizara un script SQL bastante extenso, con la idea de refactorizar el código (lo de siempre: reordena, factoriza, minimiza el acoplamiento,…). Es una de las tareas en las que he visto que es más eficaz, aunque hasta ahora creo que no había pasado de las 100 ldc – y en C#, que es un lenguaje orientado a objetos y no a conjuntos de datos o t-uplas.

Y bueno, ha ido bien, hasta que ha dejado de ir bien, por que ha sido capaz de evaluar eficazmente la complejidad (con una bonita tabla resumen), identificar entidades,… pero al pedirle que formateara las líneas para mejorar la comprensión por un humano, ha partido y mezclado las instrucciones, pero no un poco, no, el analizador de consultas de SQL se ha puesto rojo bermellón cuando le he pegado la consulta

No tengo claro cuál es el propósito de partir las líneas así, pero parece que ha primado el criterio momentáneo de formatear sobre el criterio principal, que es que esto tenga sentido. Cualquiera que comprenda el lenguaje y su contexto, sin ser un experto, sabría que esto está mal.

Se lo he «observado» con educación, y la criatura me ha contestado esto:

Ha sido capaz de corregirlo, pero el problema es que él no es capaz de entender que lo que te está mandando no tiene sentido, porque al fin y al cabo, para él, esto no tiene sentido, se lo damos nosotros cuando lo interpretamos.

Así que parece que la paradoja de la caja china se cumple: Copilot identifica los símbolos de entrada, y busca patrones entre los millones de líneas de código con comentarios que los programadores le hemos ido nutriendo gratuitamente desde GitHub, y en función de esos símbolos de entrada y su conocimiento, devuelve una salida que produce la ilusión de ser consciente.

Existe una paradoja mayor aún, y es la asombrosa capacidad de acierto que tiene cuando le pides hacer una tarea muy limitada y genérica, o que refactorice algo que ha implementado un humano previamente.

Es Prometeo, y es Pandora