¿Qué son las arquitecturas cognitivas y por qué escucharás hablar mucho sobre ellas en los próximos años? - Parte 2 de 3
En la parte anterior del post hacíamos una introducción a la innovación surgida en el campo de la Inteligencia Artificial mediante las técnicas de IA Generativa, donde explicábamos de forma breve por qué los LLMs eran una pieza clave en toda esta revolución.
Si quieres leer el post anterior te dejo el enlace aqui:
Al finalizar el post terminábamos haciéndonos la pregunta que justo ahora vamos a intentar responder:
Hasta dónde llega el potencial de los LLMs?
O dicho de otra forma...
- ¿Dónde acaba el hype y empieza el valor real de estas nuevas tecnologías?
- ¿Qué hemos aprendido y cuál va a ser la evolución de esta innovación que parece tener el potencial de cambiar el mundo?
- ¿Cómo de "inteligentes" pueden ser las nuevas aplicaciones que exploten el máximo potencial de este tipo de tecnologías?
- Transcenderá este nuevo tipo de software a las aplicaciones tal como las conocemos y será la base de nuevas formas de interacción que ahora mismo nos cuesta imaginar? (por ejemplo: agentes autónomos y colaborativos, robots, asistentes personales de última generación, etc)
Sobre las limitaciones prácticas de los LLMs
Como se comentó en la introducción, actualmente los LLMs son excelentes para reconocer y predecir patrones de lenguaje, pero carecen de la capacidad de realizar razonamientos lógicos complejos. Dicho de otra forma, pueden construir sentencias que suenan coherentes pero no comprenden realmente las relaciones causales o lógicas, no poseen sentido común, no entienden conceptos abstractos y tienen dificultadas manejando relaciones espacio-temporales, por lo que realmente no pueden razonar tal y como entendemos ese concepto los humanos.
Debido también a esto, los LLMs pueden generar información falsa o sesgada (sobre todo cuando se les interroga sobre algún dominio especializado o algún área para la que no han sido entrenados con suficientes datos). Al no poder aplicar razonamiento, sentido común o utilizar mecanismos que les permitan descartar conclusiones incorrectas intentarán elaborar una respuesta "estadísticamente probable" y la explicarán y argumentarán de una forma tan bien hilada que tendrá apariencia de ser cierta y concluyente.
Por eso, mucho ojo con confundir un LLM con una fuente de verdad, siempre hay que tener presente que dando por buenas sus respuestas se corre un cierto riesgo de aceptar conclusiones incorrectas, sesgadas o incoherentes.
Otra limitación importante de los LLMs tiene su origen en que éstos aprenden principalmente durante la fase de entrenamiento. Es en esta etapa donde el LLM procesa ingentes cantidades de información (mediante un proceso lento, costoso y que requiere una alta capacidad de cómputo). Esto significa que el LLM no tiene un conocimiento real del mundo más allá de lo que reciba en esta fase de entrenamiento. En la actualidad se investiga y ensaya intensamente para crear técnicas que superen esta limitación y permitan a los LLMs aprender de forma continua conforme interaccionan con los usuarios y con su entorno. Sin embargo estas capacidades se encuentran en fase inicial y no se han resuelto aún de forma definitiva y satisfactoria.
Finalmente, y por detallar únicamente las principales limitaciones, los LLMs carecen de memoria para recordar su historia reciente, las últimas tareas realizadas, nuevos conocimientos recién adquiridos o las consecuencias (positivas o negativas) de las últimas respuestas o acciones planteadas.
Leyendo esto seguro que has pensado... esto no me cuadra... mi asistente personal basado en IA recuerda perfectamente las últimas conversaciones que hemos mantenido, conoce mis gustos y parece que aprende sobre mi conforme voy interactuando con él.
Correcto. Tu asistente personal si aprende, pero no el LLM que tiene detrás y en el que basa la mayor parte de su funcionalidad.
Seamos precisos aquí.. tu asistente personal favorito (sea ChatGPT, Gemini, Claude, Perplexity o cualquier otro) no es un LLM, es una aplicación inteligente que se basa en las capacidades de un LLM.
Estas aplicaciones utilizan tus prompts y peticiones para consultar al LLM y beneficiarse de sus respuestas, también almacenan y recuerdan tus consultas, guardan y conservan las respuestas, combinando tus peticiones con técnicas adicionales (como RAG - Retrieval Augmented Generation y muchas otras) para hacer peticiones más potentes y mejor estructuradas, etc.
Si os parece, abrimos ya este melón y nos metemos directamente en el concepto de aplicaciones inteligentes basadas en LLMs (o LLMApps)
¿Por qué son necesarias las aplicaciones para que todo esto funcione? Hacia el concepto de LLMApps
Como ya se ha sugerido, para que los LLMs proporcionen verdadero valor es importante conectar su potencial con el mundo real ya que en principio los LLMs están totalmente desconectados del mundo (únicamente han aprendido a partir de datos que representan dicho mundo).
Para esto es necesario crear aplicaciones que aprovechen las capacidades de los modelos de lenguaje y esto nos lleva directamente al mundo del desarrollo de aplicaciones basadas en LLMs (LLMApps) y seguidamente a las técnicas y metodologías necesarias para que estas aplicaciones sean seguras, escalables y eficientes, pudiendo evolucionar correctamente gracias a estar basadas en buenas prácticas de desarrollo e ingeniería (LLMOps).
¿Y qué tipo de aplicaciones son las que podemos construir?
Ahora mismo nos encontramos en una carrera frenética para responder a esta pregunta. La gran mayoría de las empresas están intentando descubrir oportunidades, procesos de negocio y casos de uso que puedan beneficiarse de estas nuevas capacidades, al mismo tiempo que la tecnología evoluciona y se realiza ese aprendizaje colectivo masivo.
Pero desde un punto de vista abstracto podemos clasificar estas aplicaciones (sin ánimo de ser exhaustivos) en los siguientes grandes bloques:
- Aplicaciones y software manejados por humanos (el LLM ayudará a que estas aplicaciones sean más "inteligentes", proactivas y ayuden al humano a ser lo más productivo posible). Este tipo de aplicaciones suelen englobarse dentro de la categoría de soluciones "Human-in-the-loop".
- Sistemas automáticos que se relacionen con el entorno mediante sensores o interfaces hardware. Gracias a estas capacidades este tipo de sistemas pueden ser autónomos e interactuar de forma efectiva con el mundo que los rodea, generando planes de acción, controlando dispositivos, etc.
- Agentes especialistas en la realización autónoma de tareas. Estos agentes aportarán capacidades adicionales al LLM, será mucho más específicos y menos generalistas y podrán incorporar capacidades concretas como distintas integraciones para conectarse a bases de datos, APIs y fuentes de información específica, descubrir e interactuar con otros agentes con los que colaborar para resolver problemas más complejos, etc.
Salvando las limitaciones de los LLMs
Como desarrolladores de aplicaciones basadas en LLMs nos enfrentamos al apasionante reto de combinar distintas técnicas para suplir las carencias de los LLMs y conseguir sistemas con un mayor nivel de inteligencia y, por consiguiente, poder crear aplicaciones más valiosas, autónomas y versátiles.
En este punto nos vamos a sentir como pequeños aprendices de dioses o como imitadores del Dr. Frankestein, ya que vamos a intentar "implantar" o conferir a nuestras aplicaciones algunas capacidades más "humanas", justo esas en las que los LLMs van más flojos.
Esta carrera experimental es (junto con la creación de LLMs cada vez más capaces y potentes) en la que actualmente se encuentran inmersos todos los grandes fabricantes (Open AI, Google, Meta, Claude, ...). Todos se esfuerzan e invierten sumas millonarias para ir a la vanguardia en la creación de los productos y soluciones más inteligentes y capaces... esto es lo que podemos describir como la carrera hacia la AGI (siglas en inglés de Inteligencia Artificial General).
Alcanzar la AGI significará disponer de una IA que tendrá la capacidad de comprender, aprender y aplicar el conocimiento en una amplia gama de tareas, de forma similar a como lo realizan los humanos.
A continuación vamos a describir las principales características que se intentan conseguir en estas LLMApps (junto a una pequeña descripción de las principales técnicas utilizadas para ello):
- Razonamiento Simbólico:
Para que los LLMs puedan manipular conceptos, relaciones lógicas, etc. Para esto es necesario añadir capacidades de formas adicionales de representación del conocimiento (ontologías, grafos de conocimiento, reglas lógicas "if-then", etc), sumando a ésto motores de inferencia que sepan aplicar lógica y reglas deductivas de razonamiento a partir de dicho conocimiento.
- Retroalimentación del Mundo Real:
Ya que los LLMs no son buenos en actualizar dinámicamente su representación interna del conocimiento, podemos complementarlos almacenando y utilizando la información obtenida mediante la interacción con usuarios y con el entorno. Esta información pasará a complementar el conocimiento que ya posee el LLM, haciendo que la aplicación sea más fiable, más personalizada, más adaptable y en definitiva más capaz y más inteligente. En definitiva, gracias a esto las aplicaciones podrán aprender de sus errores, corregir sus sesgos y ampliar su conocimiento en tiempo real mientras interaccionan con personas, sensores, bases de datos u otros sistemas externos.
- Memoria y Aprendizaje a Largo Plazo:
Los LLMs contienen cantidades ingentes de información, pero es necesario añadir a esto la memorización de información adicional a corto, medio y largo plazo (al igual que realizamos en nuestro cerebro). Disponer de esta información adicional para enriquecer los procesos de razonamiento, elaborar esta información y poder deducir y ampliar el conocimiento, y volver a almacenarlo alimentará un ciclo interno de mejora continua y refinamiento que puede tener gran potencial. En este caso estos sistemas contarán con una gran ventaja sobre la memoria humana, al no tener limitaciones sobre el volumen de la información que se puede guardar y utilizar (algo que afecta a todos los humanos - excepto a Funes el memorioso).
- Capacidad de Planificación y Ejecución de Acciones:
Las aplicaciones basadas en LLMs pueden incorporar mecanismos que complementen las capacidades de los LLMs a la hora de generar planes de acción y de supervisar y monitorizar su adecuada ejecución en el mundo real. Para poder supervisar y garantizar una correcta ejecución deberán ser capaces de evaluar las consecuencias de sus decisiones y actos, razonar sobre ellas y corregir o reevaluar de forma dinámica el plan previsto en caso de que sea necesario.
- Explicabilidad, coherencia y fiabilidad
Para que podamos fiarnos de estas aplicaciones es necesario que podamos entender sus respuestas, sus acciones y sus recomendaciones. Al igual que a un amigo, a un profesor o a tu pareja puedes pedirle explicaciones si no entiendes algo que ha dicho o hecho, estas aplicaciones deben poder explicarse de forma convincente y razonada.
Y esto no es suficiente, también es importante que además sus respuestas y acciones sean fiables y coherentes entre sí y a lo largo del tiempo.
Si cada vez que preguntamos una misma cosa a una aplicación nos diese una respuesta distinta (y si encima fuesen contradictorias) no creo que nos acabásemos fiando demasiado ni utilizándolas de forma habitual.
Para garantizar esto deberemos incorporar en estas aplicaciones capacidades de reflexión e introspección, auto-evaluación de sus propias conclusiones y poder garantizar la coherencia y fiabilidad temporal en sus respuestas.
Construyendo LLMApps. La necesidad de LLMOps
Como puede deducirse de todo lo anterior, construir este tipo de aplicaciones inteligentes basadas en LLMs presenta nuevos retos, pero en gran parte requiere la aplicación de técnicas tradicionales de ingeniería de software a la hora de poder diseñar, desarrollar y productivizar estas aplicaciones complejas, sobre todo si se desarrollan a escala para dar servicio a grandes números de potenciales usuarios.
Estas aplicaciones requerirán un front-end, un back-end escalable y seguro, una arquitectura cognitiva que aporte las capacidades anteriormente descritas, y todo esto debe poder evolucionarse de forma ágil, eficiente y adaptable.
Aquí tendremos que poner en juego las buenas prácticas de desarrollo y de ingeniería (desde patrones, arquitecturas, frameworks y técnicas de integración y despliegue contínuo).
Gestionar el ciclo de vida de los modelos y de las aplicaciones, el diseño y despliegue de nuevos tipos de componentes que serán autónomos, modulares e independientes (agentes) y poder garantizar que todas estas piezas encajan de forma segura, controlada, eficiente y escalable va a ser un reto que va a conllevar la evolución de los principios de software ya establecidos para que puedan ser generalizados y acaben madurando en nuevas técnicas y metodologías (LLMOps).
Bueno, por ahora nos detenemos en este punto.
En el siguiente y último post de la serie analizaremos las principales tendencias y líneas de evolución a la hora de diseñar este tipo de aplicaciones inteligentes.
Hablaremos sobre cómo las arquitecturas cognitivas serán la base sobre la que se desarrollarán diferentes tipos de aplicaciones, hablaremos de arquitecturas y de colaboración entre agentes y de las principales tendencias de estandarización e investigación en esta línea (como Agent Mesh, MCP y otros conceptos interesantes y algo más novedosos).
(En breve, aquí tendréis el link al último post de la serie)
Member discussion