Quiero contaros una historia sobre la puesta en marcha de un proyecto real de IA que espero sirva para que no se trivialice con el tema. La Inteligencia Artificial es una tecnología en la que se trabaja desde los años 50 del siglo pasado, aplicándose a muchos campos como el reconocimiento de imágenes, la geolocalización, los juegos o los asistentes virtuales, entre otros. Pero en estos dos últimos años se ha popularizado gracias a los avances en IA generativa.
El gran problema es que, de ser una desconocida, ha pasado a considerarse como algo mágico. En muchas empresas de cualquier tipo, los pobres CIO se están encontrando peticiones del tipo: “pues, para resolver este problema ponemos ahí una IA y ya está”, como si la IA fuera magia que, colocándola “ahí”, sabe qué quieres que haga y cómo resolver tu problema.
Otro argumento, nacido de estos importantes avances en IA, es que quitará el trabajo a todo el mundo. Sinceramente, no creo que esto sea así porque hay que programarla, adaptarla, entrenarla con el conocimiento del negocio en el que se quiera aplicar y, si estamos usando IA generativa, hay que restringirle al máximo la capacidad de improvisación ya que siempre dará una respuesta, al contrario que en los sistemas conversacionales anteriores donde se tenían que definir las posibles intenciones del usuario. Si el usuario preguntaba algo que no estuviera contemplado, la respuesta más común era: “No entiendo esa pregunta”. Ahora no, es muy difícil que ChatGPT, Llama, Copilot, Gemini o cualquier otro te diga que no entiende la pregunta. Va a contestar, pero es muy probable que se invente la respuesta.
La IA Generativa, que genera el efecto Wow, está entrenada con una cantidad de información casi inimaginable y, utilizando sistemas de aprendizaje profundo basados en redes neuronales, identifica patrones y genera el texto con la probabilidad más alta de que sea el que responde a la consulta del usuario. Pero lo hace sin la capacidad de razonar. No debemos tener una fe ciega en lo que nos dice; podría crearnos problemas si usamos esa información sin contrastarla.
Por ejemplo, hace poco probando Copilot Pro le pregunté por el artículo 58 de la constitución española. Fue capaz de generar, sin problemas, casi dos páginas de explicaciones que se veían perfectas, bien estructuradas, coherentes, salvo por un pequeño detalle y es que lo que contaba no se refería al artículo por el que le había preguntado ( https://www.youtube.com/watch?v=TvE--fetRjY).
Detrás de la IA en el mundo real
Quiero compartir un caso que me ha ocurrido recientemente. La organización del Congreso Nacional de Innovación en Servicios Públicos ( www.cnis.es) me pidió que hiciera un avatar 3D para el congreso con quien se pudiera hablar y que ofreciera información de la agenda, los ponentes, los patrocinadores y, en general, todo lo relacionado con el congreso. La petición llegó un mes antes de la fecha.
Para aquellos que piensan que poner una IA en funcionamiento es fácil, debería ser suficiente con darle la web del congreso a una IA y, con su magia, aprenderá todo del mismo. Podéis probarlo y confirmar que eso no funciona de ninguna manera.
El siguiente paso podría ser generar pdf con la información del congreso y enviarlos a la IA como RAG (Retrieval Augmented Generation). Esta es la técnica más utilizada para enviar información a una IA generativa, aparte del prompt inicial cuando queremos que un gran modelo de lenguaje (LLM) genere información específica de nuestra empresa. Cuando se usa un RAG, los documentos se indexan como una base de datos vectorial y, posteriormente, cuando el usuario hace una consulta, esta se envía a esa base de datos, se buscan las partes de los documentos indexados más relevantes y eso se envía, junto al prompt, al modelo de lenguaje para que genere una respuesta tendiéndolos como base. Por ejemplo, supongamos que tengo un documento con los currículos de los ponentes en los que, en una línea, se pone el nombre del ponente y debajo un párrafo con su CV. El RAG es capaz de indexarlo de forma que cuando preguntemos por esa persona nos pueda dar la información asociada. Pues habría creado un vector y cuando buscásemos el nombre se seleccionaría y se enviaría junto con la pregunta que le hubiéramos hecho a nuestra IA dándole un contexto. Ambas operaciones ocuparían, como máximo, 2000 tokens, que es lo que permitía el modelo en nuestro caso. Pues eso nos funciona de maravilla para los elementos relacionados que tengan un tamaño que pueda entrar en un vector.
El reto de la IA
Podría haber estado satisfecho con esa aproximación hasta que llegó el momento de añadir la información de la agenda. Más de 200 ponentes y conferencias. Pensad que, si usamos la técnica anterior, cuando alguien pregunte, por ejemplo, por las conferencias del día de hoy en el auditorio, el sistema no va a darnos una respuesta válida, porque el tamaño del vector para almacenar toda la agenda era mucho mayor que el número de tokens (elemento de unos 4 caracteres, en inglés, con los que aprenden los modelos de lenguaje) que se podía incluir en el prompt.
Por supuesto, de eso no te das cuenta a la primera y te vuelves loco introduciendo la información de todas las formas posibles: texto plano, json, jsonl, indexando de diferentes formas y, cada vez que preguntaba por algo de la agenda, contestaba lo que le parecía y daba una o dos conferencias. En ese momento solo faltaban unos 15 días para entregar el modelo. Además, los conferenciantes y las conferencias aún no estaban, de manera que los “sin confirmar” volvían loca a la IA.
Al menos, algo funcionaba bien. Mis avatares, Victoria y Pablo, eran expertos contando chistes sobre innovación y frases célebres relacionadas. También lo hacían muy bien hablando entre ellos sobre innovación, sobre que iban a hacer después de la conferencia e incluso Pablo era capaz de declarar su amor a Victoria y ella unas veces le decía que sí o otras que estaba dedicada en cuerpo y alma a la innovación. Pero de la agenda nada de nada.
Después de hacer muchas pruebas, Araceli (ingeniera informática que me ayudó en el proceso) y yo decidimos que había que meter la información de la agenda en el prompt inicial, ya que cuando se hacía así la IA respondía bien. Con las primeras pruebas, una semana antes del evento, y con la mitad de la agenda, todo parecía ir correcto. Un poco de relajación que solo duro hasta el día antes del evento…
Mi tren salía temprano para llegar a Madrid la mañana del 25 de junio a las 9:18h. A las 10:30h todo debería funcionar correctamente. La tarde de la víspera, con la versión más reciente de la agenda en la mano, de pronto, todo dejó de funcionar. No informaba sobre patrocinadores, ponentes, no existía la información definitiva de la agenda y muchísimo menos contaba chistes. Me sentí tentado de rendirme en varias ocasiones e informar a los organizadores de que no funcionaría.
El equipo de soporte del modelo de lenguaje detectó el primer problema. Toda la información estaba en español y el coste en tokens era de casi el doble del coste en inglés. Por lo tanto, aunque nuestro texto, en teoría, no era mayor que el máximo número de tokens, al casi duplicarlo, provocó que el modelo ignorase todo el contenido. Se veía desbordado.
La cuenta atrás
A las 0:30 (4 horas antes de que sonara mi alarma) se encontró la solución probando con Victoria. Se traduciría todo al inglés y se ampliaría a 3000 el número de tokens. Ya más relajado me fui a dormir; todavía tenía 2 horas y 30 minutos de viaje para traducir todo al inglés, dividir la agenda entre los dos avatares y por día, y probarlo. Pero aún quedaba un último sobresalto. Faltaba una hora para llegar y, al probar con Pablo, de nuevo no funcionaba nada… Se corrigió sobre la marcha; el equipo de soporte solo había ampliado el prompt de Victoria y no el de Pablo.
Finalmente llegué al congreso. A las 10:30h ya estaba todo instalado. Los visitantes disfrutaron de sus conversaciones con los avatares, felizmente ignorantes del nivel de estrés acumulado hasta ese momento. Un ejemplo del resultado puede verse aquí: https://www.youtube.com/watch?v=ta7MJunL73A
En toda esta historia no he hablado del proceso necesario para reconocer la voz del usuario, convertirla a texto, enviarla a la IA, recoger la respuesta en texto, convertirla a voz y sincronizarla con los labios de los avatares, además de algunos movimientos de brazos y cabeza para que la conversación parezca natural. Tampoco del paso siguiente al que se ha llegado en el que los avatares ya no están dentro de una pantalla, sino que se han convertido en hologramas 3d ( https://www.youtube.com/watch?v=cw8Qzh-20_E), algo que creo que es, realmente, una revolución.
En conclusión, este ejemplo no es más que una anécdota. Aunque la experiencia de los avatares de la conferencia pueda parecer mágica, en realidad la implantación de una Inteligencia Artificial no suele ser mágica.
Sin embargo, tal vez el esfuerzo se convierta rápidamente en algo esperado y merezca la pena la inversión, el tiempo lo dirá.