scieee AI-readable full text Open interactive document viewer

SimulAgents: Una Herramienta Intuitiva para Modelar y Explorar Fenómenos Sociales Complejos

Ramos Suárez, Alberto; Arce Vera, Kevin Óscar

Abstract

En la actualidad, están surgiendo multitud de aplicaciones que usan tecnologías apoyadas por grandes modelos de lenguaje que facilitan la vida a profesionales de todos los sectores. Estos modelos tienen un carácter general, por lo que permiten a los usuarios especializarse y particularizar en ciertos casos, para generar sistemas específicos para un sector. Navegando por Internet, nos encontramos con el estudio de Generative Agents(Park et al., 2023), el cual llamó nuestra atención desde que lo leímos por primera vez. Este estudio desarrolló la ejecución de experimentos y simulaciones multi-agente de Inteligencia Artificial, y su objetivo final era estudiar la emergencia de fenómenos y relaciones sociales entre los agentes. En él se concluyó que efectivamente los agentes eran capaces de retener recuerdos, interactuar con otros agentes, generar nuevas memorias y planear sus próximas acciones. Al ver esto, decidimos adentrarnos en este artículo, y descubrimos que había fascinado a toda la comunidad investigadora de Inteligencia Artificial, ya que aportaba un valor novedoso y demostraba que estas simulaciones eran coherentes. Por lo que varios de estos grupos de investigadores que se adentraron a realizar extensiones al programa original, enfocando las simulaciones para que hagan otro tipo de acciones (programar videojuegos autónomamente, asignando roles a cada agente, por ejemplo). Viendo estas extensiones al código original, nos preguntamos si podríamos hacer algo similar nosotros, y hacerlo como TFG. Tras adentrarnos en el código e investigar el funcionamiento completo de la aplicación, tuvimos claro el caso de uso que quisimos enfocar: la democratización de esta herramienta y permitir que perfiles como psicólogos puedan usarla fácilmente. Lo vimos claro porque a los perfiles a los que más les puede interesar una aplicación como esta es a psicólogos y profesionales que estudian las relaciones sociales. Sin embargo, tal y como estaba inicialmente diseñado el proyecto, era bastante complicado que un perfil no tecnológico, supiese cómo usar esta aplicación. Por lo que teniendo clara nuestra motivación y objetivo principal, nos pusimos manos a la obra. El código desarrollado durante la realización de este trabajo se encuentra disponible en https://github.com/NILGroup/TFG-2324-Simulador-MAS-LLM

Full text

SimulAgents: Una Herramienta Intuitiva para Modelar y Explorar Fenómenos Sociales Complejos SimulAgents: An Intuitive Tool to Model and Explore Complex Social Phenomena Trabajo de Fin de Grado Curso 2023–2024 Autores Alberto Ramos Suárez Kevin Óscar Arce Vera Directores Gonzalo Méndez Pozo Pablo Gervás Gómez-Navarro Grado en Ingeniería del Software Grado en Ingeniería Informática Facultad de Informática Universidad Complutense de Madrid SimulAgents: Una Herramienta Intuitiva para Modelar y Explorar Fenómenos Sociales Complejos SimulAgents: An Intuitive Tool to Model and Explore Complex Social Phenomena Trabajo de Fin de Grado en Ingeniería del Software e Ingeniería Informática Autores Alberto Ramos Suárez Kevin Óscar Arce Vera Directores Gonzalo Méndez Pozo Pablo Gervás Gómez-Navarro Convocatoria: Junio 2024 Grado en Ingeniería del Software Grado en Ingeniería Informática Facultad de Informática Universidad Complutense de Madrid 27 de mayo de 2024 Agradecimientos A Natalia por todo el apoyo y paciencia, a Dai por aguantar el tostón que he dado estos meses. A toda mi familia, especialmente a mis padres y mis hermanos, por las oportunidades que me han dado y por todo lo que he aprendido de ellos. A Nita, por ser mi lugar seguro y mi soporte durante este último año. v Resumen SimulAgents: Una Herramienta Intuitiva para Modelar y Explorar Fenómenos Sociales Complejos En la actualidad, están surgiendo multitud de aplicaciones que usan tecnologías apoyadas por grandes modelos de lenguaje que facilitan la vida a profesionales de todos los sectores. Estos modelos tienen un carácter general, por lo que permiten a los usuarios especializarse y particularizar en ciertos casos, para generar sistemas específicos para un sector. Navegando por Internet, nos encontramos con el estudio de Generative Agents(Park et al., 2023), el cual llamó nuestra atención desde que lo leímos por primera vez. Este estudio desarrolló la ejecución de experimentos y simulaciones multi-agente de Inteligencia Artificial, y su objetivo final era estudiar la emergencia de fenómenos y relaciones sociales entre los agentes. En él se concluyó que efectivamente los agentes eran capaces de retener recuerdos, interactuar con otros agentes, generar nuevas memorias y planear sus próximas acciones. Al ver esto, decidimos adentrarnos en este artículo, y descubrimos que había fascinado a toda la comunidad investigadora de Inteligencia Artificial, ya que aportaba un valor novedoso y demostraba que estas simulaciones eran coherentes. Por lo que varios de estos grupos de investigadores que se adentraron a realizar extensiones al programa original, enfocando las simulaciones para que hagan otro tipo de acciones (programar videojuegos autónomamente, asignando roles a cada agente, por ejemplo). Viendo estas extensiones al código original, nos preguntamos si podríamos hacer algo similar nosotros, y hacerlo como TFG. Tras adentrarnos en el código e investigar el funcionamiento completo de la aplicación, tuvimos claro el caso de uso que quisimos enfocar: la democratización de esta herramienta y permitir que perfiles como psicólogos puedan usarla fácilmente. vii Lo vimos claro porque a los perfiles a los que más les puede interesar una aplicación como esta es a psicólogos y profesionales que estudian las relaciones sociales. Sin embargo, tal y como estaba inicialmente diseñado el proyecto, era bastante complicado que un perfil no tecnológico, supiese cómo usar esta aplicación. Por lo que teniendo clara nuestra motivación y objetivo principal, nos pusimos manos a la obra. El código desarrollado durante la realización de este trabajo se encuentra disponible en https://github.com/NILGroup/TFG-2324-Simulador-MAS-LLM Palabras clave Modelos de lenguaje grandes, comportamientos emergentes, interacción, interfaz, democratización de la tecnología, agentes inteligentes Abstract SimulAgents: An Intuitive Tool to Model and Explore Complex Social Phenomena In recent years, numerous applications have emerged that utilize technologies powered by large language models, easing the lives of professionals across various sectors. These models possess a general nature, enabling users to specialize and tailor them to specific cases, generating systems tailored to a particular industry. While navigating the internet, we encountered the study of Generative Agents(Park et al., 2023), which captured our attention from the moment we first read it. This study developed the execution of multi-agent Artificial Intelligence experiments and simulations, with its ultimate goal being to investigate the emergence of social phenomena and relationships between agents. It concluded that agents were indeed capable of retaining memories, interacting with other agents, generating new memories, and planning their next actions. Upon reading this, we decided to delve deeper into this article, and we discovered that it had captivated the entire Artificial Intelligence research community, as it introduced a novel value and demonstrated that these simulations were coherent. Consequently, several of these research groups embarked on extending the original program, focusing the simulations on performing other types of actions (programming video games autonomously, assigning roles to each agent, for example). Observing these extensions to the original code, we wondered if we could do something similar ourselves, and develop it as a TFG. After delving into the code and investigating the complete functionality of the application, we had a clear understanding of the use case we wanted to focus on: democratizing this tool and enabling profiles such as psychologists to use it easily. This became evident because the profiles most likely to be interested in such an application are psychologists and professionals who study social relationships. Howix Índice de figuras 2.1. Estructura de una neurona de una RNN . . . . . . . . . . . . . . . . 25 2.2. Estructura de una celda LSTM . . . . . . . . . . . . . . . . . . . . . 26 2.3. Estructura de una arquitectura seq2seq . . . . . . . . . . . . . . . . . 27 2.4. Arquitectura Transformer (Imagen tomada de Vaswani et al. (2017)) 29 2.5. Visualización del mecanismo Positional Encoding ........... 30 2.6. Ilustración del mecanismo de Self-Attention. Tomada de Vaswani et al.(2017) ................................. 31 2.7. Ilustración de múltiples capas en la fase de atención. Tomada de Vaswanietal.(2017)........................... 31 2.8. Tomada de Ma et al. (2024) . . . . . . . . . . . . . . . . . . . . . . . 34 2.9. Arquitectura del estudio Generative Agents(Park et al., 2023) . . . . 36 2.10. Diferencia de rendimiento de Generative Agents con diferentes arquitecturas (Park et al., 2023) . . . . . . . . . . . . . . . . . . . . . . . . 37 2.11. Resumen de textos (adaptada de Adhikari et al. (2020)) . . . . . . . . 44 2.12. Cronología de las mayores redes sociales hasta 2006 (boyd y Ellison, 2007).................................... 51 3.1. Diseño del sistema original . . . . . . . . . . . . . . . . . . . . . . . . 57 3.2. Diseño del sistema final tras las adaptaciones . . . . . . . . . . . . . . 76 4.1. Diagrama del estado de los comandos actualmente . . . . . . . . . . . 80 5.1. Pasos para diseño centrado en el usuario según Google . . . . . . . . 89 xvii 5.2. Barra de navegación en el formato Desktop . . . . . . . . . . . . . . . 89 5.3. Barra de navegación en el formato para dispositivos móviles . . . . . 89 5.4. Barra de navegación en el formato para dispositivos móviles, con la barra de navegación desplegada . . . . . . . . . . . . . . . . . . . . . 90 5.5. Versión de escritorio de la vista para crear una nueva simulación . . . 91 5.6. Versión de móvil de la vista para crear una nueva simulación . . . . . 92 5.7. Vista de visualizar simulaciones en formato escritorio . . . . . . . . . 93 5.8. Vista de continuar simulaciones en formato ecritorio . . . . . . . . . . 95 5.9. Vista de la guía de usuario en versión escritorio . . . . . . . . . . . . 96 5.10. Vista de landing actualizada . . . . . . . . . . . . . . . . . . . . . . . 97 5.11. Vista de visualización de una simulación . . . . . . . . . . . . . . . . 98 5.12. Vista de ejecución de una simulación . . . . . . . . . . . . . . . . . . 99 5.13. Texto indicativo de que la simulación está ejecutando en segundo plano100 5.14.Modaldesusurro.............................102 5.15. Modal de chat con respuestas simuladas . . . . . . . . . . . . . . . . 102 Índice de tablas 3.1. Tiempo de ejecución en segundos. Se incluyen datos de la API de GPT-3.5.................................. 65 3.2. Distintas medidas de los modelos. La medida Perplexity es ideal cuando vale 1. A falta de datos para Llama 2 7B 32FP incluimos los del modeloen16FP ............................. 65 4.1. Diferencias entre crear simulación antes y después . . . . . . . . . . . 81 4.2. Diferencias entre ejecutar simulación antes y después . . . . . . . . . 81 4.3. Diferencias entre susurrar a un agente antes y después . . . . . . . . . 82 4.4. Diferencias entre guardar simulación antes y después . . . . . . . . . 82 4.5. Diferencias entre salir sin guardar simulación antes y después . . . . . 82 4.6. Diferencias entre ver una demo de simulación antes y después . . . . 83 xix Cap´ ıtulo 1 Introducción “La creatividad es únicamente unir conceptos” — Steve Jobs Las relaciones sociales han sido tema de estudio en múltiples ocasiones a lo largo del tiempo. El comportamiento de los seres humanos es ciertamente complejo y, en muchos casos, impredecible. Por ello, surge la necesidad de tratar de comprender la base de estas relaciones e intentar predecir los comportamientos mediante las simulaciones. En los últimos años, y especialmente en el último, hemos visto un desarrollo fulgurante de la Inteligencia Artificial generativa. Uno de los casos de uso más interesantes de estas tecnologías son los Modelos Grandes de Lenguaje (Large Language Models), de propósito general, los cuales nos permiten interactuar mediante el lenguaje natural directamente con estos sistemas de IA generativa. Al desarrollar estos Modelos del Lenguaje, si se tiene una serie de ejemplos lo suficientemente grande, el programa podrá generar situaciones completamente únicas y originales, imitando ejemplos ya conocidos pero sin reutilizarlos de manera literal. En este momento entra en juego el comportamiento humano. Si tenemos unos modelos muy grandes, capaces de obedecer a esquemas de entrada y crear situaciones únicas, ¿podríamos simular relaciones sociales humanas verosímiles usando estas tecnologías? Este experimento fue llevado a cabo en el estudio de Park et al. (2023), en el cual nos hemos basado al realizar nuestro Trabajo de Fin de Grado. En este experimento logran crear agentes independientes los cuales interactúan entre ellos, tienen recuerdos de eventos ocurridos y son capaces de desarrollar relaciones sociales entre sí. 1 2Capítulo 1. Introducción 1.1. Motivación La motivación inicial de este trabajo era poder crear historias a partir de simulaciones con agentes de Inteligencia Artificial. Sin embargo, al encontrar el estudio de Generative Agents(Park et al., 2023), decidimos cambiar el objetivo y centrarnos en cómo gente de perfiles no tecnológicos, especialmente psicólogos, pueden estudiar las relaciones sociales entre humanos, partiendo de una simulación que ya funcionaba y lograba que los personajes tuviesen recuerdos e interaccionasen de manera verosímil. Por tanto, a partir de ese momento, nuestro principal objetivo se convirtió en crear una aplicación en la cual psicólogos u otro tipo de usuarios puedan estudiar relaciones sociales, indicando diferentes situaciones y facilitando los cambios entre simulaciones para estudiar las diferencias de comportamiento. Con un sistema como el citado, disponemos de lo necesario para crear un entorno en el que intervengan varios agentes e interactúen entre sí. Una implementación de esta idea es la que tenemos en el repositorio generative_agents1creado por los autores del paper mencionado anteriormente. Disponer de una tecnología capaz de simular el comportamiento humano en contextos sociales nos crea la necesidad de experimentar con estas capacidades en distintas situaciones. Esta necesidad se ve reflejada en otro estudio, el cual pone a prueba y expande el mismo trabajo original, de Park et al. (2023), pero en esta ocasión midiendo la capacidad de un grupo de agentes para generar software (Qian et al., 2023). En este estudio se comprueba que estos mismos agentes son capaces de asociarse, formar equipos y generar videojuegos funcionales con código real. Se ve así el potencial de esta tecnología y el interés de la gente por definir sus límites, aplicaciones o simplemente experimentar. Sin embargo todas estas motivaciones se ven muy limitadas a la hora de poner en funcionamiento este trabajo en nuevos escenarios debido a la complejidad de la ejecución de la aplicación, la cual es difícil de usar para perfiles ajenos al mundo de la programación, y muy difícilmente extensible debido a la situación inicial del código (personajes y mapas preseleccionados y no intercambiables, rigidez a la hora de ejecutar simulaciones, falta de modificación del contexto de la aplicación...). Es por ello que proponemos en este Trabajo de Fin de Grado facilitar el acceso e interacción con la tecnología que proporcionan en Generative Agents, además de ofrecer nuevas funcionalidades con las que explorar e interactuar con la simulación en tiempo real. 1https://github.com/joonspk-research/generative_agents 1.2. Objetivos 3 1.2. Objetivos Para lograr el objetivo principal del TFG mencionado anteriormente, que es facilitar el acceso e interacción y extender funcionalidades del estudio de Generative Agents, hemos decidido estructurarlo en los siguientes puntos: Creación de simulaciones configurando agentes y/o el escenario. Ya que actualmente solamente existe un mapa predeterminado y una serie de agentes predefinidos. La finalidad es permitir una mayor interactividad con el entorno, añadiendo mapas y pudiendo personalizar a los agentes. Permitir la interacción con el estado de los agentes durante la simulación. En cualquier momento, el usuario podrá interactuar con los agentes, chateando en tiempo real con ellos o ’susurrándoles’las próximas acciones que deben tomar. Visión de la simulación, a través de un personaje o de una forma general y sintetizada. También permitir a los usuarios, una vez finalizada una simulación, poder hacer un resumen de toda la simulación como conjunto o hacerlo desde el punto de vista de uno de los agentes. Gestión de las simulaciones, permitiendo el guardado de estas y la creación en base a anteriores. Esto permitirá poder ver simulaciones repetidas o extenderlas. Integración de todo lo anterior en una interfaz web nueva y creada completamente desde cero, comunicándose con el back en tiempo real y sin necesidad de usar una terminal para comunicarnos. Integración con el modelo de lenguaje y la API de OpenAI actualizada, ya que las llamadas originales usaban una API anterior que no funcionaba correctamente. 1.3. Plan de trabajo Con el fin de cumplir los objetivos planteados en la sección anterior, se ha fijado una planificación dividida en las siguientes etapas: Etapa de investigación y definición de objetivos. En esta primera parte del desarrollo, nos centraremos en investigar artículos científicos y libros que traten sobre temas similares a la interacción de agentes de IA, así como definiendo los objetivos básicos, en qué sentido vamos a extender el trabajo descrito en el artículo original de Generative Agentsy comenzar a redactar esbozos iniciales de la introducción y estado de la cuestión de la memoria. 4Capítulo 1. Introducción Tras concluir con las investigaciones iniciales y la adaptación al tema, comenzaremos la fase del desarrollo del proyecto, realizando así los diseños de las distintas interfaces, el desarrollo de las mismas y la producción de los capítulos principales de la memoria. Finalmente, llegaremos a la fase de finalización y revisión del desarrollo, en la cual finalizaremos todos los detalles y objetivos adicionales que queramos incluir en el proyecto, una vez finalizados los objetivos propuestos. En esta etapa también añadiremos el resumen, resultados, conclusiones y trabajo futuro, así como también revisaremos el resultado final de la memoria y el trabajo en su totalidad. 1.4. Estructura del documento El presente documento está formado por siete capítulos, incluyendo este capítulo introductorio como el primero de ellos con el fin de conocer la motivación que lleva al desarrollo del proyecto y los objetivos de este. Además, hay un último capítulo en el que cada uno de los estudiantes explicamos el trabajo que hemos realizado individualmente. A continuación, se presentan el resto de capítulos que componen la memoria: Capítulo 2: En el Estado de la Cuestión se tratan temas que aportan un contexto importante al presente trabajo. Por una parte se abordan temas técnicos, como los agentes inteligentes, las simulaciones y los modelos de lenguaje, por otro lado, la unión entre la tecnología y el comportamiento humano, con el procesamiento del lenguaje natural y la computación centrada en el humano, y finalmente, se tratan temas relacionados puramente con las relaciones sociales y la democratización de sistemas informáticos. Capítulo 3: En este capítulo se abordan las diferencias entre las funcionalidades que ya existían en el sistema que empleamos, las que existían pero las ampliamos, y las nuevas que creamos durante el presente trabajo. En este capítulo solo se aborda el trabajo desde un punto de vista de funcionalidades, a alto nivel, y no el estado tecnológico a bajo nivel. Capítulo 4: En el Planteamiento de la Solución se tratan varios puntos para aportar contexto y recalcar hitos que han ido ocurriendo durante el desarrollo. Por un lado, se aporta desde un punto de vista tecnológico y de bajo nivel el estado del sistema inicialmente. Tras esto, se tratan todos los ajustes, cambios y reconsideraciones que acontecieron mientras se desarrollaba el propio trabajo, así como problemas encontrados y cómo se han solucionado. Capítulo 5: En el cual se tratan todas las extensiones que se han realizado al sistema original, a bajo nivel y explicando los cambios, su importancia y el motivo. 1.4. Estructura del documento 5 Capítulo 6: Desde el punto de vista de la interfaz, se presentan todos los cambios, nuevas vistas y páginas que han sido creadas para que la aplicación pueda ser completamente utilizada desde la web, ya que originalmente había que ejecutar comandos en la terminal para realizar ciertas acciones. Capítulo 7: En el capítulo de Conclusiones y Trabajo Futuro se añaden posibles extensiones al sistema u objetivos que habríamos implementado si hubiéramos tenido más tiempo, a tener en cuenta para el futuro. 12 Capítulo 2. Estado de la Cuestión el peor. Sin embargo hay ciertas aplicaciones o tareas en las que necesitamos una capacidad de resiliencia y decisión que con los sistemas tradicionales no es posible obtener. Sobre todo en entornos de rápido cambio, impredecibles y donde la cantidad de posibles situaciones no permita la posibilidad de plantearse cualquier escenario desde el diseño. Un típico ejemplo de la necesidad de este tipo de sistemas es el envío de una sonda espacial a una distancia de la tierra que imposibilite el uso de un equipo humano que realice el seguimiento y toma de decisiones ante cualquier eventualidad imprevista, debido al retardo en la comunicación con la sonda debido a la distancia. Estas necesidades llevan a empresas como la NASA a investigar en agentes con más capacidad de autonomía para tener un mejor desempeño y confianza en este tipo de sistemas (Rouff, 2002). Otro ejemplo, en una situación más cercana, sería la forma en que se localizan, actualizan y registran las páginas web en Internet. Cualquiera que se haya visto envuelto en el desarrollo de una página web probablemente se haya topado con un archivo llamado robots.txt, que es la forma que tienes de comunicarte con los agentes que Google utiliza para registrar o actualizar las páginas a través de Internet1. A pesar de que Agente es un término ampliamente usado en la literatura y los sistemas con los que interactuámos cada día, no hay un consenso en la definición de Agente, el mayor acuerdo que se encuentra en torno a esta definición es la centralidad que ocupa la autonomía para un Agente. Parte del desacuerdo en esta definición se debe al amplio número de sectores en los que es utilizado, teniendo cada uno de estos unas necesidades muy distintas, siendo necesaria alguna característica de los Agentes en ciertos sectores pero totalmente indeseables en otros, un ejemplo sería la capacidad de aprender de los Agentes. En cualquier caso se puede tomar prestada la definición dada por Weiss (1999) para tener una idea más cercana de lo que pretendemos expresar al hablar de Agentes. Un Agente es un sistema computacional que se encuentra en cierto entorno, y es capaz de actuar de forma autónoma en este entorno con el fin de cumplir sus objetivos de diseño 2.1.1. Principios en el diseño Entre los factores más importantes a la hora de diseñar un Agente se encuentran los siguientes (Russell y Norvig, 2016), (Wooldridge, 2009): La capacidad de control del Entorno En el mejor de los casos el Agente tiene un control parcial sobre el entorno, pero no en la mayoría. 1https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl= es 2.1. Agentes 13 Decisión de la acción a ejecutar Esta toma de decisiones se puede ver afectada por el tipo de entorno en el que nos encontramos y siempre está enfocada en conseguir los objetivos definidos de la forma más satisfactoria posible. No-determinismo de las acciones ejecutadas La falta de control supone que una misma acción no dará siempre los mismos resultados. Posibilidad de fallo El mencionado no-determinismo nos lleva, en numerosas ocasiones, a no obtener el resultado deseado, por ello, incluso en los Agentes más sencillos, hay que tener en cuenta la posibilidad de fallo. Con lo dicho hasta el momento damos cabida a un gran número de sistemas, en esta definición cabe cualquier daemon de nuestro sistema, por ejemplo el programa xbiff que es capaz de monitorear un sistema UNIX y notificar al usuario en caso de que haya un nuevo correo. 2.1.2. Agentes inteligentes Una aplicación más buscada y útil son los Agentes Inteligentes. La diferencia con los anteriores es la flexibilidad que estos tienen de actuar de forma autónoma y flexible para cumplir con sus objetivos de diseño. Por flexible entendemos lo descrito en Jennings y Wooldridge (1998): Sensible a su entorno siendo capaces de reaccionar en los momentos oportunos en los que su entorno cambia. Proactivo además de ser capaces de responder a los cambios deben ser capaces de tomar la iniciativa en la búsqueda de cumplir sus objetivos. Sociable también han de ser capaces de comunicarse con otros agentes o humanos, cuando lo consideren necesario, para cumplimentar sus objetivos. Este tipo de sistemas permite encarar un gran número de problemas y desarrollar sistemas en los que podemos disponer de Agentes Inteligentes capaces de realizar nuevas tareas. Un claro ejemplo de esto, que ya mencionábamos anteriormente, es Internet, donde tenemos una gran red de organizaciones desplegando información y cada una de ellas siguiendo sus propios objetivos y metodologías, haciendo de este un entorno muy heterogéneo y dinámico. Este tipo de agentes es también un componente central en Park et al. (2023), siendo en base a estos y su interacción (entre ellos y su entorno), que obtenemos las complicadas dinámicas que acabamos observando. Viendo una vez más de la capacidad de estos sistemas para acomodarse en dominios cambiantes y de gran complejidad. 14 Capítulo 2. Estado de la Cuestión 2.2. Simulaciones basadas en agentes En este apartado mostraremos de forma superficial el concepto de Simulaciones basadas en Agentes, así como numerosos ejemplos en los que se ha visto aplicada esta técnica, ya que es un concepto central a la hora de desarrollar el trabajo en el que se basa nuestro TFG (Park et al., 2023). Las Simulaciones basadas en Agentes, o también conocidas como Agent-Based Model (ABM), tratan de dar lugar a sistemas complejos a través del uso de agentes. En base a la interacción, entre agentes y el entorno, se pretende generar comportamientos y patrones a nivel de sistema (Bankes, 2002). Este tipo de sistema se caracteriza por: Tener un conjunto de agentes que siguen reglas sencillas. Estos agentes interactúan entre sí de forma continuada. Hay características a nivel de sistema que ocurren de forma emergente. Las reglas elegidas para los agentes se entienden como fundamentales. Una vez establecidas dichas reglas se observa la evolución del sistema (aquí es donde frecuentemente ocurre el fenómeno de la emergencia). El dominio de los fenómenos que se pretende recrear son de gran complejidad. Es por esta última característica que la variedad de escenarios o fenómenos recreables se vuelve tan amplio, permitiendo a una gran cantidad de disciplinas hacer uso de estas técnicas. Tenemos ejemplos en multitud de Ciencias Sociales, Organizacionales, Ecológicas, Económicas, etc... (Troitzsch, 2009), (Heckbert et al., 2010). Unido a esto, tenemos la importancia que se ha conferido al entendimiento de un alto número de sistemas complejos en múltiples ámbitos del conocimiento, por ejemplo tenemos el clima terrestre, la ecología, el cerebro, las relaciones sociales, etc... Así, se junta una técnica muy versátil con un necesidad, ampliamente extendida, de recrear y analizar sistemas de alta complejidad, los cuales escapan a los clásicos modelos lineales o analíticos. 2.2.1. Historia de las Simulaciones basadas en agentes Entre las décadas de los 50 y los 70, trabajos como la máquina auto-replicante (Neumann, 1966) , de Von Neumann, o como el Juego de la Vida (Gardner, 1970), de John Conway, dieron cabida y avance al concepto de Autómata celular, siendo esta una de las primeras formas de Simulación basada en agentes. 2.2. Simulaciones basadas en agentes 15 Poco tiempo después vemos varios modelos que empleaban Simulaciones basadas en agentes para estudiar diversidad de fenómenos. Tenemos ejemplos en la política (Schelling, 1971), la Teoría de Juegos (mediante un torneo organizado por Robert Axelrod para evaluar distintas estrategias del Dilema del Prisionero), o la ecología (Hogeweg y Hesper, 1983). En los 90 surge una expansión notable en el interés por estas técnicas. Esto se ve reflejado en diversos trabajos, de notable envergadura, llevados a cabo por varias universidades e investigadores provenientes de multitud de disciplinas, como ejemplos tenemos Epstein y Axtell (1996) de Sugarscape, Computational Analysis of Social and Organizational Systems (CASOS)2de la Carnegie Mellon University, o Kohler y Gumerman (2000) del Santa Fe Institute entre otros. También surgieron revistas enfocadas a las sociedades virtuales y sus simulaciones, como la Journal of Artificial Societies and Social Simulations (JASSS) o la Complex Adaptive Systems Modeling (CASM) de Springer. La efectividad de estos métodos acabó saltando fuera del ámbito de la investigación y encontrando un hueco en la sociedad. Lo podemos ver reflejado en el surgimiento de varias organizaciones, durante la misma década, centradas en el estudio y exploración de Simulaciones sociales y técnicas de organización efectiva - NAACSOS3, ESSA4, PAAAESSA5a través de Simulaciones basadas en Agentes. Con esta breve revisión queda claro el amplio rango de aplicación de estos modelos, además del gran interés que suscitan por la misma razón. 2.2.2. Principios de las Simulaciones basadas en agentes Las simulaciones basadas en agentes se basan principalmente en el modelo computacional de los Sistemas Multiagente. Este tipo de sistemas forman un nuevo paradigma de computación enfocado en resolver tareas que serían imposibles de resolver para un sistema centralizado, bien por la complejidad de diseñar e implementar soluciones centralizadas, o bien por el pobre rendimiento que estas obtendrían. Aparte de la naturaleza descentralizada del problema, se encuentra el otro componente central en este paradigma, los agentes. En este tipo de sistemas son los Agentes y las interacciones que hay entre ellos y su entorno los que dan lugar a las dinámicas que hacen de es interés este paradigma. Es en la conjunción de estos dos conceptos donde se desvelan los elementos centrales de un Sistema multiagente, estos son, los Protocolos de comunicación entre Agentes, los protocolos de interacción entre Agentes y Entorno y el Entorno. 2http://www.casos.cs.cmu.edu/ 3http://www.casos.cs.cmu.edu/naacsos/index.php 4http://www.essa.eu.org/ 5http://www.paaa.asia/#:~:text=Pacific%2DAsian%20Association%20for%20Agent, European%20Social%20Simulation%20Association%2C%20ESSA 16 Capítulo 2. Estado de la Cuestión Estas características se van a explicar basándonos en un estudio de sistemas multiagente, en el que se discute un enfoque moderno para el diseño de un sistema de IA distribuido (Weiss, 1999) 2.2.2.1. El entorno El entorno se puede pensar como la infraestructura que especifica los distintos protocolos de comunicación e interacción entre agentes y entorno. Permitiendo siempre la interacción, en mayor o menor medida, de los Agentes con "lo que les rodea". Otros aspectos clave en el diseño del entorno son la falta de centralización del entorno y que estos están poblados por Agentes. Además de esas consideraciones están otras que surgen a la hora de diseñarlo, teniendo en cuenta que estas especificaciones engloban cualquier tipo de sistema multiagente. Infraestructura de comunicación En la que se tiene en cuenta el tipo de comunicaciones que se puede dar entre los agentes, dando la posibilidad de que esta sea Broadcast o Unicast, Memoria compartida o mensajes a través de la red, comunicación sincrona o asíncrona, etc... Protocolos de mensaje Si la comunicación se da entre agentes en distintas redes abrá que considerar el tipo de protocolos de red que utilizarán para la comunicación (HTTP, HTML...). Servicios de seguridad Para garantizar una participación de agentes legítimos en el sistema. Soporte de operaciones Que garantice una consistencia en las interacciones que se dén en el sistema. Además de estas características propias del entorno, están las relativas al entornoagente: Percepción del entorno Cuánto sabe el agente sobre el entorno. Predecible Cómo de predecible es el entorno para el agente. Controlable Cuán modificable es el entorno por el agente. Dependiente del pasado Cuánta dependencia tienen los futuros estados del sistema de los estados previos. Naturaleza Teleológica de las partes Qué capacidad de acción tienen las otras partes del sistema desde el punto de vista del agente. A tiempo real El entorno es cambiante durante el proceso de toma de decisión del agente. 2.2. Simulaciones basadas en agentes 17 2.2.2.2. Protocolos de comunicación entre agentes Los agentes capaces de realizar esta acción son entes activos, capaces de percibir, razonar y actuar. Entre las acciones disponibles de un agente asumimos que se encuentra la de comunicarse con otros agentes, aunque también tiene su parte de percepción (al ser capaz de recibir mensajes de otros agentes para que exista una verdadera comunicación). El objetivo de la comunicación entre Agentes es conseguir mejores resultados para ellos o para el sistema/sociedad de agentes (según si el Agente es cooperativo o no). Un resultado favorable de que haya comunicación entre Agentes es que da la posibilidad de que haya coordinación en el comportamiento y sus acciones, dando lugar a sistemas más coherentes. Esta coherencia se puede interpretar como la capacidad del sistema de actuar como una unidad, lograr esto a través de Agentes independientes es algo difícil de lograr sin ningún tipo de comportamiento centralizado. A la hora de tratar de establecer la forma de comunicación entre Agentes surgen complicaciones a las que prestar atención, como pueden ser las siguientes: Mensaje Descriptivo vs Prescriptivo Habiendo una diferencia entre mensajes que describen hechos y mensajes que describen acciones o comportamientos, siendo el primero de estos igual de esencial que el segundo, pero menos adoptado por la dificultad que tiene hacer que una Agente sea capaz de emitir dichos mensajes. Significado Personal vs Convencional También se ha de tener en cuenta la diferencia de significado de un mensjae que puede haber entre el que lo emite y quien lo recibe. Contexto Igual de importante que el contenido de un mensaje e ssu contexto. Debiendo tener en cuenta el estado del agente receptor y el del entorno. Alcance del lenguaje Compromiso entre expresividad del lenguaje y complejidad a la hora de manejarlo. Identidad Se podría considerar parte del Contexto del lenguaje, tiene en cuenta los roles y partes involucradas en el mensaje. Otros factores a tener en cuenta a la hora de especificar los protocolos de comunicación entre Agentes son el tipo de mensajes (dependiente del tipo de Agente emisor), los niveles de comunicación, intención de la comunicación, etc... No los veremos en detalle debido a la extensión del campo y a que en el sistema multiagente relativo al trabajo en que nos basamos (Park et al. (2023)) los protocolos de comunicación están englobados dentro de la arquitectura de Agente propuesta. Además de que varios de los puntos a tener en cuenta son relegados a la hora de 18 Capítulo 2. Estado de la Cuestión adoptar las respuestas del LLM subyacente como los directores de acción de los Agentes. 2.2.2.3. Protocolos de interacción entre agentes Los protocolos de interacción se encargan de llevar a cabo el intercambio de una serie de mensajes entre Agentes -Una conversación-. Se puede hacer una distinción entre los tipos de protocolos en base a si los Agentes actúan por objetivos individuales o comunes. En el caso de los objetivos individuales lo único que se pretende con los protocolos de interacción es maximizar las "ganancias". Al contrario, al haber Agentes con objetivos comunes, los protocolos de interacción tratan de lograr una coherencia global sin afectar a la autonomía de los Agentes y sin un control global explícito. Para lograr esto se tienen en cuenta varios aspectos como determinar objetivos o tareas comunes, evitar conflictos innecesarios o reunir conocimiento y pruebas. 2.2.3. Uso reciente de Simulaciones basadas en agentes Como ya hemos visto en el apartado anterior, el rango de aplicaciones que este tipo de métodos tiene es amplio. En este apartado mencionaremos, superficialmente, avances significativos en distintos campos, a través del uso de esta técnica. Nos centraremos en los campos más relacionados al trabajo en el que nos basamos en este documento Park et al. (2023). Estudios de Marketing En este ámbito tenemos como ejemplo Rand y Rust (2011), el cual propone líneas generales de desarrollo de Simulaciones basadas en Agentes que cumplan con ciertos estándares ámpliamente aceptados en ese ámbito en concreto, cumpliendo con la necesidad de establecer una forma común de proceder al hacer uso de las Simulaciones basadas en Agentes. Así vemos, con este trabajo, que en el ámbito del marketing ya se ha buscado la aplicación de este tipo de técnicas. Psicología Organizacional El trabajo Hughes et al. (2012) nos muestra las ventajas y límites que las Simulaciones basadas en Agentes tendría al ser aplicada en la Psicología organizacional, sobre todo en entornos de alto riesgo o investigaciones que conlleven problemas prácticos o éticos. Esta ventaja se ve aún más potenciada al ser alimentada con comportamientos humanos creíbles. Característica que buscan y evaluan en Park et al. (2023). Gestión de equipos En este ámbito, la exploración de distintas tomas de decisiones o entornos se vuelve crucial a la hora de decidir cómo organizar un equipo de trabajo. Al ser esta tarea ubicua en cualquier tipo de proyecto han sido múltiples los trabajos que buscan desarrollar o aportar nuevas herramientas a la hora de lidiar con este tipo de situaciones, entre los más destacados 2.3. Sistemas multi-agente para la simulación social 19 encontramos a Crowder et al. (2012), Boroomand y Smaldino (2021) y Boroomand y Smaldino (2023), siendo estos dos últimos publicaciones de la revista JASSS, que exploran distintos escenarios y formas de interactuar entre los miembros de equipos que buscan soluciones a diversos problemas, valiéndose del estudio que realizan a una Simulación basada en agentes. Redes sociales En este ámbito hay multitud de fenómenos que son de gran interés, entre estos tenemos el de mecanismo de difusión de la información. Cuyo entendimiento nos ofrecería formas de proceder al lidiar con problemas como las Fake News. En este tipo de problemas también vemos un buen desempeño por parte de las Simulaciones Basadas en Agentes. Como ejemplo tenemos Nasrinpour et al. (2016), donde se propone una Simulación basada en agentes a gran escala con la intención de estudiar como se comportaba el fenómeno de la difusión de la información en base al tipo de usuarios modelados, tomando como referencia la red social Facebook. Economía Tras la crisis de 2008, se han buscado modelos que permitan un mejor y mayor nivel de análisis de los mercados financieros Bookstaber (2017), Farmer y Foley (2009). Con este objetivo, las Simulaciones Basadas en agentes ofrecen una forma de diseñar experimentos desde un enfoque bottom-up. Vemos además que el enfoque que adoptan este tipo de simulaciones permite la aparición de dinámicas muy complejas a nivel de sistema. Esto se refleja en trabajos como Tesfatsion y Judd (2006) y Agents of Change6. En los cuales se explora la validez de este tipo de modelos a la hora de analizar cuestiones tan complejas y dinámicas como la economía. 2.3. Sistemas multi-agente para la simulación social Después de comentar la historia, principios y uso reciente de las simulaciones basadas en agentes en la sección anterior, esta sección se centrará en profundizar en los sistemas multi-agente (SMA) para la simulación social específicamente. Estos son una clase de sistemas que simulan el comportamiento de agentes de Inteligencia Artificial para replicar comportamientos sociales y estudiar los mismos. 2.3.1. Historia de los SMA para la simulación social El uso de los SMA para simulaciones sociales se remonta a la década de 1990, con la creación del modelo Sugarscape, el cual se utilizó para investigar fenónemos sociales como la contaminación o la migración, entre otros (Axtell et al., 1996). A lo largo de los años ha sido un tema interesante de estudio, pero muchas veces limitado por la tecnología, ya que no existían unos modelos capaces de realizar 6https://web.archive.org/web/20110123110948/http://www.economist.com/node/ 16636121 20 Capítulo 2. Estado de la Cuestión simulaciones verosímiles con las que se pudiesen estudiar relaciones sociales creíbles. Un ejemplo de un estudio de esta índole es el realizado por varios profesores de la UCM en 2006, en el que se exploraba la investigación de SMA para sistemas sociales con agentes software, empleando el lenguaje de modelado INGENIAS y donde lo extienden para poder realizar simulaciones sociales, permitiendo así llevar a cabo el estudio de la religiosidad de la sociedad española que tiene lugar en el artículo (Arroyo Menéndez et al., 2006). A día de hoy, con los avances que ha habido en el campo de la Inteligencia Artficial y con la proliferación de sistemas de IA generativa, es posible realizar SMAs verosímiles y que tengan un comportamiento humano, como se ha visto en el caso de Generative Agents (Park et al., 2023), el estudio en el que nos basamos para este trabajo. 2.3.2. Ejemplos de aplicaciones de los SMA en simulaciones sociales Además de los vistos en el apartado anterior, hay algunas otras áreas en las que se han implementado estas simulaciones exitosamente, como son las siguientes: Estudios sobre la difusión de información en redes sociales, como es el caso de uno particular, realizado en la plataforma de Facebool. En este estudio, se investiga sobre cómo la información (o desinformación) se propaga entre usuarios y qué factores pueden acelerar o frenar esta difusión (Gambo et al., 2020). Investigación del comportamiento de multitudes. Como se mencionó anteriormente, los SMA se pueden utilizar para simular el comportamiento de las masas ante desastres naturales como terremotos o inundaciones, entre otros, para así ver cuál es la opción óptima de evacuación (Marks, 2012). Análisis de mercados financieros, analizando cómo los gentes interactúan en la compra y venta de activos financieros, lo que ayudaría a prever posibles crisis financieras y diseñas políticas regulatorias más efectivas (Marks, 2012). 2.4. Modelos de lenguaje La búsqueda y desarrollo de Modelos de Lenguaje (LMs por sus siglas en inglés) se fundamenta en la necesidad de superar las barreras entre la comunicación humana y la interacción con las máquinas, buscando una integración más natural y eficiente en nuestra vida cotidiana y profesional. Esta búsqueda se motiva por el deseo de automatizar y optimizar tareas que requieren el procesamiento del lenguaje natural, desde la traducción y generación de texto hasta la asistencia personalizada y la gestión de información. 2.4. Modelos de lenguaje 21 Al mismo tiempo, los LMs prometen romper las barreras lingüísticas y mejorar la accesibilidad, permitiendo que información y servicios sean más inclusivos y estén al alcance de una audiencia global más amplia. En el ámbito académico y profesional, el desarrollo de estos modelos impulsa la innovación en inteligencia artificial, abriendo nuevas líneas de investigación y aplicaciones prácticas en sectores tan variados como la salud, la educación, el derecho y el entretenimiento. En esta sección pretendemos dar un breve contexto y explicación de los Modelos de Lenguaje, que son el impulsor de todo este trabajo. Comenzaremos explicando brevemente cómo se desarrolló inicialmente el campo de los Modelos de Lenguaje. Dando unas breves pinceladas a los modelos simbólicos, detallando un poco los modelos estadísticos más extendidos y, que a día de hoy, siguen realizando variedad de tareas y finalmente a los modelos neuronales, que son los que potencian todos los sistemas conversacionales exitosos que vemos a día de hoy. 2.4.1. Modelos simbólicos Este enfoque fue el primero en ser adoptado. En base a reglas que se plasmaban en el sistema, las cuales se obtenían a partir de expertos en el campo de aplicación, se acababa construyendo un sistema capaz de tomar decisiones con la información con que se había nutrido al sistema. Basados en este enfoque tenemos diversas corrientes que le dieron uso, entre otros se encuentran los siguientes: Sistemas expertos Este tipo de sistemas busca resolver problemas a través de sistemas a los que se les ha específicado una serie muy concreta de reglas con las que operar. Su uso se extendió a inicios de los 70 en cantidad de sistemas de diagnóstico78. En el campo del lenguaje también hubieron trabajos que trataron de demostrar su aplicabilidad, un ejemplo de esto lo tenemos en el estudio realizado por Winograd (1971) Gramáticas generativas Este concepto es central en lingüística y propone una forma muy estructurada de definir un lenguaje, en concreto su sintáxis. Este modelo en concreto fue presentado en Chomsky (1957) por Chomsky y se ha utilizado en sistemas como Forecast Generator descrito en el artículo de Goldberg et al. (1994) Traducción automática En un inicio también se puso especial énfasis en la traducción automática de textos, viendo ejemplos en proyectos como en el 7https://pubmed.ncbi.nlm.nih.gov/2191729/ 8https://www.researchgate.net/publication/43763822_An_Expert_System_for_ Diagnosis_Of_Human_Diseases 28 Capítulo 2. Estado de la Cuestión Este modelo soluciona varios de los problemas que surgían en modelos anteriores en el campo de la traducción, sin embargo se encuentra con sus propias limitaciones. Entre estas, la más importante, es el problema del Cuello de botella que se ocasiona al tener que codificar todo el Input a través del Encoder para así obtener el Vector de Contexto con el que inicializamos al Decoder. Otro de los problemas con los que se encuentra este modelo es el limitado contexto al que puede atender en la secuencia de entrada, esto se debe al hecho de que toda la secuencia de entrada se ha de representar mediante el Vector de Contexto, llegando a perder mucha información en el caso de secuencias de entrada largas debido al tamaño fijo del Vector de Contexto. Poco después surge el trabajo Bahdanau et al. (2014) que se centra en introducir los Mecanismos de atención, aliviando el problema de la limitiación en el tamaño de la secuencia de entrada. Este mecanismo consigue una mejor selección de la información tenida en cuenta por el Decoder a la hora de decodificar la información del Encoder. Esto lo hace a través de añadir, al Decoder, mecanismos capaces de deducir la similitud entre las respuestas ofrecidas por el Encoder y el Decoder. 2.4. Modelos de lenguaje 29 2.4.3.4. Transformers Uno de los puntos de inflexión llega con el trabajo de Vaswani et al. (2017) presentado por investigadores de Google, que introduce multitud de conceptos, que, en conjunto, son capaces de ofrecer un modelo superior en rendimiento y desempeño a los anteriores. Una característica principal es el nuevo enfoque que da, dejando de ser un nuevo paso en el camino trazado por los modelos explicados anteriormente, y proponiendo un modelo que pone la tilde en el mecanismo de atención y construyendo, a partir de este, un sistema capaz, de forma intrínseca, de atender a las relaciones semánticas entre los componentes de las secuencias tratadas (e.g. las palabras de un texto), además de ofrecer la posibilidad de realizar todas las tareas de entrenamiento e inferencia de una forma paralela, abriendo así la posiblidad a un aumento en la escala de este tipo de modelos como no se había visto y en el que aún no terminamos de ver el progreso. Esto se puede apreciar en la ilustración que se muestra en la Figura 2.4 Figura 2.4: Arquitectura Transformer (Imagen tomada de Vaswani et al. (2017)) Entre los principales componentes con los que cuenta el modelo propuesto tenemos: 30 Capítulo 2. Estado de la Cuestión Figura 2.5: Visualización del mecanismo Positional Encoding Positional Encoding Como ya habíamos visto en varios modelos anteriores, a la hora de tratar las secuencias de entrada estas eran convertidas en Tokens correspondientes a un Word Embedding con la intención de atrapar el significado semántico. En este trabajo se añaden mecanismos para atrapar, a la vez que el significado semántico, la relación de orden de aparición entre los Tokens de la secuencia de entrada. Esto lo consiguen mediante la adición de los valores de funciones seno y coseno de frecuencias variando en función de la posición del Token y del tamaño del Word Embedding permitiendo, además, atrapar esta relación de posición para cualquier longitud de cadena de entrada. PEpos,2i= sin(pos/100002i/dmodel ) PEpos,2i+1 = cos(pos/100002i/dmodel ) Podemos ver cómo actúa el mecanismo mediante la Figura 2.514, donde se ilustra en qué forma varía la codificación en relación a la posición del Token. Self Attention Busca la similaridad entre una palabra con todas las demás, y con ella misma. Actúa sobre la secuencia de entrada para asignar la importancia que cada una de estas tiene en la palabra en la que nos habíamos enfocado inicialmente (producto escalar). Para lograr esto introduce con cada palabra tres nuevos valores Query,Key yValue, con el objetivo de lograr una codificación para cada palabra resultado de su relación con las demás, que es el que usará como valor representativo del Token (ver figura 2.6). 14https://datascience.stackexchange.com/questions/51065/ what-is-the-positional-encoding-in-the-transformer-model 2.4. Modelos de lenguaje 31 Figura 2.6: Ilustración del mecanismo de Self-Attention. Tomada de Vaswani et al. (2017) Figura 2.7: Ilustración de múltiples capas en la fase de atención. Tomada de Vaswani et al. (2017) El uso que se le da al valor Query es obtener a través de este y todos los demás valores Key una serie de valores con la que, al pasar por una función Softmax, obtenemos el peso que damos a cada uno de los valores Value de los otros Token, consiguiendo con la suma de todo esto el valor que esperábamos para la palabra de la que empleábamos el Query. Una gran ventaja de este mecanismo es la paralelización que ofrece en la fase de codificación, ya que para el cálculo del valor de codificación no necesitas ningún resultado dependiente de las palabras anteriores. Eliminando el problema que tenían modelos anteriores en la obtención del Vector de Contexto. La arquitectura puede tener múltiples capas de atención. Capturando cada una de ellas distintas relaciones entre las palabras y de forma completamente independiente y paralelizable (ver Figura 2.7). Además permite añadir múltiples capas con pesos y desvios distintos, de forma que la arquitectura sea capaz de enfocarse en varios tipos de relaciones entre las palabras. En el trabajo presentado por Google propusieron un modelo con 8 capas. Con este último modelo hemos hecho un repaso de la evolución que este campo ha sufrido. Partiendo de modelos formalizados hace más de 4 décadas hasta modelos propuestos hace menos de 5 años y que actualmente nutren las arquitecturas propuestas para llevar a cabo la construcción de sistemas tan presentes y capaces en nuestro día a día. Tenemos ejemplos claros en productos como ChatGPT o la competición que se está viendo en el campo de los LLM involucrando a empresas de primer calibre como Microsoft, Meta, Google u OpenAI, ofreciéndonos tanto modelos como asistentes de chat nuevos y más potentes cada pocos meses. Este tipo de 32 Capítulo 2. Estado de la Cuestión modelos es el que más desarrollos ha sufrido y todos ellos se basan en la arquitectura que acabamos de presentar. 2.4.4. Grandes Modelos de Lenguaje Como hemos visto en la sección anterior, una de las grandes ventajas de los Transformers fue la paralelización, abriendo el paso al desarrollo de modelos cada vez más grandes y versátiles. Esta versatilidad ha hecho buscar en este tipo de modelos infinidad de aplicaciones. Sin embargo, esta capacidad viene acompañada de una alta necesidad de computación para llevar a cabo un entrenamiento, haciendo muy restrictivo el acceso a dichos modelos. Es por ello que este tipo de tecnologías han sido abordadas por entidades con una gran cantidad de recursos computacionales, como ejemplo Google que introdujo la arquitectura BERT o GPT introducida por OpenAI. Aunque en ocasiones estos avances se compartían de forma abierta (Touvron et al. (2023)) y hay multitud de iniciativas que abogan por el desarrollo libre, la iniciativa privada a tomado una parte considerable en el desarrollo de estos modelos. Llegando a ser estos últimos los modelos que más han irrumpido en la sociedad debido a sus capacidades. 2.4.4.1. Modelos Generativos En parte, el interés en estos sistemas ha venido de la mano con su capacidad para generar información valiosa a partir de un entrenamiento. Hasta avances como los Variational Autoencoders Kingma y Welling (2013) y las Redes GANs Goodfellow et al. (2014), los modelos eran mayoritariamente estadísticos. dando lugar principalmente a modelos discriminativos para datos más complejos como imágenes o lenguaje Natural. Ejemplos de estos podrían ser los analizadores de sentimientos o clasificadores de imágenes. Con la llegada de estos avances, en combinación con modelos más desarrollados como los Transformers, empezaron a surgir los primeros Modelos generativos con resultados de un mayor nivel de calidad, entre estos se encuentran, por el lado del Lenguaje, Generative Pre-Trained transformer (Radford et al., 2018), GPT, donde vemos el primer Modelo del lenguaje creado por OpenAI y que, posteriormente, daría lugar a los sistemas tan asimilados de hoy en día como ChatGPT. Por el lado de la generación de imágenes también cabe destacar la aparición de sistemas como DALL-E o Stable Diffusion, ambos basados en Modelos de difusión , pero grandes ejemplos de las capacidades e interés que suscitan los Modelos Generativos. 2.4. Modelos de lenguaje 33 2.4.4.2. Principales LLMs A continuación, comentaremos los principales Modelos de Lenguaje con que se cuenta a día de hoy (a pesar de que la vigencia de estos se vea rápidamente mermada en favor de nuevos y más avanzados modelos en muy poco tiempo). GPT 4 Este es un modelo multimodal (capaz de procesar imágenes también) privado de la empresa OpenAI, basado en transformers y entrenado tanto con bases de datos públicas como con datos provistos por terceros. Además de la fase de entrenamiento, donde se estima que hubo alrededor de un billón (europeo) de parámetros que calcular, tiene una fase de aprendizaje reforzado con humanos en el que se consigue un fine-tuning del modelo con el objetivo de alinearlo a los interéses de la empresa y sus usuarios. Los detalles técnicos y de implementación no son públicos, sin embargo se piensa que hacen uso de la técnica MoE. Donde se han entrenado múltiples redes, cada una experta en un ámbito concreto, y encargada de dar respuesta a consultas relativas a su ámbito, que en conjunto forman parte del sistema GPT4, permitiendo así segmentar las requisitos computacionales de la inferencia, obteniendo mejores tiempos de inferencia y menores uso de memoria. Llama Es el LLM creado por Meta. Totalmente abierto y en varios tamaños, también usa los tranformers. La ventaja que trae este modelo es que se trató de conseguir un aumento en la eficacia de su eficacio aumentando la cantidad de datos de entrenamiento en lugar del número de parámetros. Consiguiendo así un rendimiento similar a modelos como GPT 3 con una décima parte de su tamaño, lo que permitía el acceso a los más avanzados LLMs incluso en un ámbito local. Hasta el momento hay 3 versiones de este modelo, la primera de ellas sin ser accesible al público y las dos últimas siendo Open Source. Llama 2 ofreció 3 tamaños, 6.7B, 13B y 69B. Siendo estos respectivamente de 6.7, 13 y 69 mil millones de parámetros. Llama 3 ha ofrecido hasta el momento 2 tamaños, 8B y 70.6B. 2.4.4.3. Técnicas de optimización para Grandes Modelos de Lenguaje Con el auge de esta tecnología también se ha visto el afloramiento de multitud de técnicas para aumentar la eficiencia de los modelos. Estas técnicas se enfocan en añadir mejoras en el proceso de entrenamiento, como en el paper 1-bit LLMs por Ma et al. (2024), o en modelos ya entrenados. Poda 34 Capítulo 2. Estado de la Cuestión Fue una propuesta realizada en los 90 en el paper LeCun et al. (1989), donde explicaba los beneficios que suponian a una red de neuronas, tanto para el proceso de aprendizaje, como para aprovechar mejor los datos de entrenamiento y los recursos computacionales. Este enfoque se puede adoptar tanto durante como tras el entrenamiento. Ambos enfoques traen la misma ventaja, optimizar el uso de parámetros de la red eliminando aquellos parámetros que no tienen relevancia en la red. Dando lugar a redes más compactas y más enfocadas en su tarea. Al obtener redes más compactas, se reduce considerablemente el tiempo de inferencia. Quantization Esta técnica se basa en reducir la cantidad de memoria necesaria para representar un parámetro. Surgiendo un trade-off en la precisión de los parámetros (y por tanto la información que son capaces de manejar correctamente) y el rendimiento de la red. Este método no afecta a la estructura del modelo, ya que solo atañe a la precisión de los parámetros en el mismo. Suele llegar a reducir la información desde formatos de representación float de 32 bits hasta representacion de 4bits, viendo un detrimento de la calidad en las respuestas con cada reducción de precisión. Pero ofreciendo un amplio abanico de opciones y bajando el umbral para el uso de estos sistemas. Modelos de 1.58 bits Este último avance Ma et al. (2024), surgido este mismo febrero, nos ofrece la posibilidad de reducir al mínimo la cantidad de recursos necesarios (3 valores) para representar a los parámetros de un Modelo de IA. Reduciendo drásticamente el tiempo de inferencia, la energía consumida y la cantidad de memoria necesitada. 1.3B 3B 7B 13B 70B Model Size 100 101 102 Latency (ms) 1.67x 2.71x 2.90x 3.68x 4.10x BitNet b1.58 LLaMA 1.3B 3B 7B 13B 70B Model Size 100 101 102 Memory (GB) 2.93x 3.55x 4.40x 5.12x 7.16x BitNet b1.58 LLaMA Figura 2.8: Tomada de Ma et al. (2024) En el paper muestran los resultados de haber creado un modelo, BitNet b1.58, implementando su idea y comparandolo a modelos como Llama en vario tamaños 2.5. Generative Agents: el estudio original del que se parte 35 distintos, uno de los resultados más destacados de este avance lo mostramos en la figura 2.8. 2.4.4.4. Técnicas de evaluación de LLMs Perplexity La perplejidad es un tipo de evaluación intrínseca, que se centra en evaluar directamente la calidad y precisión de las salidas del modelo. Se basa en indicar como de bueno es un modelo en predecir una palabra, una medida baja es un mejor rendimiento. Esta evaluación viene de la teoría de la información y fua popularizada en el campo del lenguaje natural por trabajos como los estudios de Jelinek (1976) y Brown et al. (1990). Se basa en la idea de medir la incertidumbre en las predicciones del modelo. PP = 2−1 NPN i=1 log2P(wi) Actualmente, se utiliza de forma amplia, se puede ver como métrica usada en trabajos como Ïmproving Language Understanding by Generative Pre-Training"Radford et al. (2018). 2.5. Generative Agents: el estudio original del que se parte Como se ha mencionado en la introducción, el desarrollo del presente trabajo parte inicialmente de otro estudio realizado previamente, en el que se emplea un sistema multiagente para la simulación social (los cuales serán tratados en la sección 2.3) y cuyo foco es demostrar que pueden emerger ciertos fenómenos sociales a partir de esta simulación (Park et al., 2023). Este estudio logra demostrar de manera exitosa la generación de relaciones sociales y de recuerdos en la memoria, indicando así que mediante el diseño y arquitectura iniciales, podían estudiar el comportamiento humano en cierta medida. En el presente capítulo, trataremos por un lado el diseño existente en el estudio de Generative Agents (Park et al., 2023), así como las funcionalidades que ejecutaba inicialmente la aplicación, para tener claro el funcionamiento inicial de nuestro sistema y qué era lo que ya había previamente implementado. 36 Capítulo 2. Estado de la Cuestión 2.5.1. Diseño original del sistema El sistema fue diseñado para los propósitos previamente mencionados, por lo que, como los objetivos principales de este trabajo se apoyan en el desarrollo realizado en este estudio, no hemos cambiado este diseño y esta arquitectura, ya que se ha demostrado que funciona. Lo que hemos realizado son adaptaciones y extensiones al programa previamente existente. La arquitectura básica sobre la que se basa el artículo de Generative Agents se puede apreciar en la figura 2.9. En esta, se ve cómo la información y memorias que generan los usuarios se percibe por tres medios distintos: la percepción (perceive), el plan y la reflexión (reflection). Estos tres modos de obtención son muy importantes y se explicará más en detalle en qué consiste cada uno. Figura 2.9: Arquitectura del estudio Generative Agents(Park et al., 2023) Percepción de la información: La primera manera de los agentes para obtener información del exterior, y la más obvia, es mediante la percepción que estos agentes tienen respecto del ambiente que les rodea. Es decir, todo su entorno con el que pueen interactuar, como pueden ser objetos, lugares u otros personajes de la simulación. Mediante la percepción de información externa, los personajes la procesan y la guardan en su memoria de una manera directa. Plan de las siguientes acciones a realizar: Una vez el agente ya ha almacenado varias memorias y recuerdos (ya sea por el contexto inicial que se le otorga o porque las ha percibido del entorno), el personaje podrá utilizar esta información para planear cierta acción, que esta se mueva al flujo de memoria y que finalmente se guarde con el resto de memorias. Así, un usuario podría elaborar un plan a partir de ciertos conocimientos que tenga en ese momento, por lo que el plan será la siguiente acción que realizará el agente. Reflexión de los conocimientos adquiridos: Por último, los agentes podrán reflexionar sobre la información que ya conocen. Una vez tienen cierto volumen 2.5. Generative Agents: el estudio original del que se parte 37 de memorias y reciben nueva información que se contradice con alguna de sus memorias, estos agentes realizarán una tarea de reflexión, comparando así los dos datos y decidiento cuál tomar como referencia. Esto es un claro ejemplo de cómo los agentes pueden cambiar de opinión a medida que avanza la simulación, si estos reciben estímulos u opiniones que se contradigan con lo que ellos inicialmente piensan. Estos tres métodos alteran la memoria de cada personaje, de la cual se extraerá el contenido necesario para realizar la acción pertinente en cada momento. Los tres son sumamente importantes para la correcta ejecución de la aplicación, ya que, como se aprecia en la figura 2.10 si alguno de estos se extrae de la arquitectura, esta deja de tener tanta solidez en cuanto a resultados. Figura 2.10: Diferencia de rendimiento de Generative Agents con diferentes arquitecturas (Park et al., 2023) La figura 2.10 representa el grado en que las diferentes arquitecturas producen un comportamiento parecido al humano. Tras desarrollar el sistema completo, los creadores del artículo original llevaron a cabo un estudio en el que se comparaban las distintas arquitecturas para ver cuál producía unos resultados más similares a como lo haría un humano. Para esto, pidieron a cada arquitectura que simulara ciertas situaciones y extrayese conclusiones, y después contrataron una serie de personas que revisasen todos los resultados, los cuales determinarían el grado de ’humanidad’de cada uno. La primera barra, de color rojo, es la que usa la arquitectura completa, implementando observación, plan y reflexión de los hechos. Vemos que esta arquitectura produce unos resultados más humanos incluso que los propios humanos a los que se pidió realizar este experimento (representados en la barra de color negro) en este experimento, lo cual sorprende en gran medida, ya que simulan un comportamiento más humano que los propios humanos, según la percepción de los evaluadores humanos de la encuesta. 44 Capítulo 2. Estado de la Cuestión Resumen de textos Basados en el tipo de salida Extractivos Abstractivos Basados en el propósito Genéricos Específicos del dominio Basados en consultas Basados en el tipo de entrada Documento único Múltiples documentos · & . · * · d Figura 2.11: Resumen de textos (adaptada de Adhikari et al. (2020)) 2.6.3. Impacto del desarrollo del PLN en la sociedad actual Como se ha visto, el procesamiento del lenguaje natural se ha desarrollado enormemente desde su concepción, especialmente en los últimos años. Con el uso de las tecnologías más modernas, se ha conseguido que el PLN sea parte del día a día de una persona común, lo cual ha traido múltiples beneficios a la sociedad, como pueden ser los siguientes: Mejora en la comunicación: Facilitando la interacción con dispositivos electrónicos, como pueden ser los asistentes virtuales conocidos como Siri (de Apple) o Alexa (de Amazon). Además, al interpretar el lenguaje natural, se han creado diferentes dispositivos que permiten a personas con discapacidades, comunicarse con otra gente. Progreso de la traducción automática: Como se ha visto, la traducción automática tanto de discursos como de textos ha sido uno de los puntos de estudio principales relacionados con el PLN. A día de hoy, este ámbito está bastante desarrollado y permite unir personas de diferentes culturas y países. Ayudas de soporte para negocios: Con la proliferación de los conocidos ’chatbots’, muchos negocios de todos los tamaños se han visto beneficiados, pudiendo incorporarlos como una medida de soporte para los clientes. Análisis avanzado de datos: El PLN permite utilizar enormes cantidades de texto y aportar estadísticas importantes a partir de él, lo cual sería muy difícil para os humanos debido a las grandes cantidades de información. Además, estos análisis a gran escala pueden servir para analizar los sentimientos de los mensajes publicados en redes sociales, por ejemplo. 2.7. Computación centrada en el usuario 45 A pesar de todas estas ventajas que el procesamiento del lenguaje natural ha aportado a la sociedad, existen varios desafíos para que esta tecnología sea capaz de funcionar. Las máquinas requieren una comunicación precisa y exacta, y los humanos hablamos con ambigüedades y de forma poco precisa en el día a día. Además, para poder transcribir a texto las palabras de una persona, es necesario un uso claro y comprensible del lenguaje. Estas solo son algunas de las barreras en las que se está trabajando para poder hacer esta tecnología accesible a todo el mundo. 2.7. Computación centrada en el usuario La computación centrada en el usuario (CCU) es una disciplina que se dedica a centrar todo el desarrollo de un sistema informátivo en los seres humanos que la usarán, así como estudiar los fenómenos relacionados más significativos. Para esto, la CCU incorpora en sus estudios varios factores humanos en el diseño y prácticas de la informática, como pueden ser circunstancias sociales o culturales, empleando para ello equipos multidisciplinares para resolver los desafíos, más que equipos puramente tecnológicos. Este tema es abordado desde hace muchos años, analizando el artículo de Card et al. (1983), vemos que estos abogan por una perspectiva que no solo se centre en la eficiencia técnica del sistema, argumentando que ”un buen diseño de sistema se debe evaluar en términos de la eficacia con la cual el sistema ayuda a los usuarios a alcanzar sus metas”. Lo cual subraya la importancia de no solo medir el éxito de un programa informático en términos de rendimiento, sino también en la capacidad del sistema para ser comprensible, usable y facilite las tareas del usuario que lo usa. Además, otro de los objetivos de la computación centrada en el humapno es crear sistemas que sean adaptables a los requerimientos cambiantes del usuario. No es solamente hacer un sistema optimizado y usable por los humanos, sino que también se pueda amoldar a las necesidades cambiantes de los futuros usuarios. 2.7.1. Interacción Persona-Ordenador La Interacción Persona-Ordenador (IPO) es un área más específica que la computación centrada en el usuario, ya que esta se focaliza especialmente en la relación entre el sistema y el humano, y no se centra tanto en factores externos más globales. Los ordenadores llegaron a nuestras vidas en la década de 1940, y la ciencia de la interacción entre las personas y ordenadores llegó en la década de 1980. Entonces, ¿entre 1940 y 1980 no había interacción entre personas y ordenadores? No exactamente. En aquellas épocas, los ordenadores no estaban tan masificadamente disponibles como lo están a día de hoy, por lo que solo un selecto grupo de personas podían ”comunicarse” con ellos. Estas personas eran perfiles técnicos como ingenieros y científicos, por ello la interacción era muy compleja y un amplio conocimiento 46 Capítulo 2. Estado de la Cuestión técnico era necesario. (MacKenzie, 2012). A partir de la década de 1980, con la llegada de los ordenadores a la vida cotidiana de las personas, se comenzó a investigar acerca de cómo facilitar la accesibilidad a todos los públicos para interactuar con las máquinas. La investigación en el campo de la IPO ha abordado una amplia gama de aspectos, desde la usabilidad y la experiencia del usuario hasta la accesibilidad y la adaptabilidad de los sistemas informáticos. La usabilidad, en particular, ha sido un tema central en la IPO. Este concepto se refiere a la facilidad con la que los usuarios pueden aprender a utilizar un sistema, realizar tareas y recordar cómo usarlo en el futuro. Uno de los estudios más importantes en este campo es el de Jakob Nielsen Nielsen (1994), en el que identifica los principios como la visibilidad del estado del sistema o la correspondencia entre el sistema y el mundo real como elementos clave para mejorar la usabilidad de los sistemas informáticos. Además de la usabilidad, la experiencia de usuario (UX por sus siglas en inglés) también ha sido un área de interés en este ámbito. La UX se refiere a las percepciones y respuestas de una persona que resultan del uso o de un producto, sistema o servicio. En resumen, el estudio de las vivencias de los usuarios con el programa informático. Don Norman, en su libro Norman Donald (2013), introdujo el concepto de ”diseño centrado en el usuario”, donde enfatizó la importancia de diseñar productos que se alineen con la forma en que las personas piensan. 2.7.2. Proceso de diseño centrado en el usuario El diseño centrado en el usuario es un enfoque de desarrollo de productos (en nuestro caso, de software) que pone al usuario en el centro del proceso de diseño. Reconoce la importancia de comprender las necesidades, capacidades y preferencias de los usuarios finales. El proceso de diseño centrado en el usuario generalmente sigue una serie de etapas iterativas que incluyen investigación, diseño, prototipado, evaluación y refinamiento. La investigación de usuarios es una etapa fundamental. Esta etapa implica la recopilación y análisis de información sobre los usuarios finales, incluyendo sus características demográficas, necesidades, comportamientos y preferencias. Basándose en los hallazgos de la investigación de usuarios, los diseñadores pasan a la etapa de diseño conceptual, donde generan ideas y conceptos de diseño que abordan las necesidades y metas identificadas de los usuarios. En esta etapa se suelen crear prototipos de baja fidelidad, como bocetos y maquetas, para explorar ideas de manera rápida y económica. Los siguientes pasos son los de prototipado y evaluación, donde se crean prototipos de alta fidelidad que simulan la funcionalidad y la apariencia del producto final. 2.7. Computación centrada en el usuario 47 Estos prototipos se someten a pruebas de usabilidad y evaluaciones de usuario para identificar problemas y áreas de mejora. Finalmente, basándose en los resultados de la evaluación, los diseñadores refinan y mejoran el diseño del producto, iterando en el proceso según sea necesario. Este enfoque iterativo permite a los diseñadores incorporar el feedback de los usuarios y abordar los problemas de diseño de manera proactiva, creando productos que se alinean mejor con las necesidades y expectativas de los usuarios finales. 2.7.3. Computación afectiva La computación afectiva es el estudio y desarrollo de sistemas y dispositivos que reconocen, interpretan, procesan y simulan el afecto humano. Está muy relacionada con la computación centrada en los usuarios, ya que hace especial hincapié en las emociones de los humanos al desarrollar sistemas informáticos. Esta rama de la computación se corresponde a un campo interdisciplinar que abarca tanto las ciencias de computación, psicología y ciencias cognitivas. Esta ciencia comenzó a ser analizada a partir del artículo científico publicado de Picard (1995), en el cual se estudiaban maneras de aplicar la subjetividad humana a los computadores. Dos de las áreas de la computación afectiva son la detección y reconocimiento de información emocional y la emoción en las máquinas. La primera área comienza con sensores que capturan datos sobre el estado físico o comportamiento de la persona, sin interpretar los datos de entrada. Estos sensores son análogos a las técnicas que utilizan los humanos para detectar las emociones en otras personas (expresiones faciales, posturas, temperatura corporal, etc.). En cuanto al área de la emoción en las máquinas, se estudia la capacidad que tienen estos computadores de convencer y simular emociones humanas. En el libro de Minsky (2007) se propone que las emociones "no con específicamente tan diferentes de otros procesos a los que consideramos ’pensamiento’", por lo que podría ser que estas lleguen a simular sentimientos mediante un proceso de lógica. 2.7.4. Ejemplos reales de CCU El campo de la computación, existen varios temas del mundo real a los que se puede aplicar, algunos ejemplos de esto son los siguientes: Solución de problemas en entornos distribuidos: Abarcando sistemas de información basados en Internet, redes de información basadas en sensores o dispositivos de información móviles y vestibles (relojes inteligentes, por ejemplo). Todos estos sistemas han de ser diseñados considerando al usuario como centro del estudio. Sistemas multi-agente que controlan y coordinan acciones para resolver problemas complejos, como es el caso en el que nos basamos para el presente 48 Capítulo 2. Estado de la Cuestión trabajo, extendiendo y adaptando el sistema multi-agente desarrollado en es estudio de Park et al. (2023). Definición de estructuras semánticas para que la información multimedia dé soporte a entradaas y salidas de múltiples modalidades. Como se ha visto en el apartado anterior de PLN, este campo es muy importante para la democratización a todos los públicos y que se está promoviendo en los avances actuales de la tecnología. Además, existen casos de proyectos reales en los que se está aplicando la CHH, uno de ellos es la División de Ciencias Computacionales NASA/Ames, la cual está realizando una investigación como miembros del Proyecto Haughton-Mars para determinar, vía estudio de analogías, cómo de probable es que la vida humana sea fructífera en Marte. Uno de las investigaciones dentro de este proyecto es el desarrollo de robots que asistirán a los científicos, ayudándoles a tomar en consideración los factores humanos, de computación y del entorno para poder sobrevivir en Marte. Otro de los ejemplos es el Centro de Computación Cognitiva Ubicua (CUbiC) de la Universidad Estatal de Arizona, el cual se basa en los principios de la CCH para desarrollar aplicaciones asistivas, rehabilitativas y de salud. Algunos ejemplos de estos desarrollos son los conocidos como Ñote-Taker’, un dispositivo diseñado para ayudar a los estudiantescon poca visión a seguir las clases y tomar apuntes, o el ’VibroGlove’, que reconoce las expresiones faciales mediante retroalimentación háptica para ayudar a personas con problemas visuales. 2.8. Relaciones sociales El artículo sobre el que se ha basado la realización de este trabajo de fin de grado (Park et al., 2023), está muy enfocado en el estudio del comportamiento humano y las finalidades que podría tener el hecho de simular relaciones sociales entre agentes de inteligenicia artificial. Algunos de los casos de uso de este estudio podrían ser la incorporación a personajes no jugables en videojuegos o la simulación de entornos reales para ver cómo afectaría la introducción de cambios en el ambiente, tal y como se menciona en el artículo. Sin embargo, las relaciones sociales son un tema importante en la psicología y se han estudiado desde diferentes perspectivas. En la informática, el estudio de las relaciones sociales se ha centrado en la creación de sistemas que permitan la interacción social en línea. Es por eso que se divide el estudio de las relaciones sociales en estos dos campos, abordando en cada uno el contexto, la historia e investigaciones anteriores relacionadas con las relaciones sociales desde dos ámbitos diferentes. 2.8. Relaciones sociales 49 2.8.1. Psicología Las relaciones sociales desempeñan un papel fundamental en la vida humana, impactando de manera significativa en el bienestar emocional y mental de las personas. El estudio de las interacciones sociales ha revelado una serie de beneficios intrínsecos que estas conexiones ofrecen a nivel psicológico y emocional. A lo largo del tiempo ha habido estudios que muestran de manera consistente que los individuos con menor cantidad de relaciones sociales son mas propensos a fallecer en comparación con lo que tienen una vida social plena. Estos estudios han arrojado una mayor evidencia en países industrializados (House et al., 1988). Una vez se conoció el claro vínculo entre las relaciones sociales y la salud de las personas, los científicos se centraron en explicar cómo ocurre esto. Generalmente, existen tres amplias maneras en las que las relaciones sociales influencian la salud: de comportamiento, psicosociales y fisiológicas (Umberson y Montez, 2010). Explicaciones de comportamiento: Los comportamientos relacionados con la salud abarcan una amplia gama de conductas personales que influyen en la salud, la morbilidad y la mortalidad. De hecho, los comportamientos relacionados con la salud explican aproximadamente el 40 por ciento de la mortalidad prematura, así como una morbilidad y discapacidad sustanciales en los Estados Unidos. (Mcginnis et al., 2002) Explicaciones psicosociales: La investigación en diferentes disciplinas y poblaciones sugiere la posibilidad de que algunos mecanismos psicosociales influyan en como los lazos sociales promueven la salud. Diferentes estudios han observado solamente uno de estos mecanismos, pero debido a la complejidad de la interconexión de estos mecanismos, hace que no sea posible llegar a una conclusión certera a no ser que se estudien todos a la vez. Explicaciones fisiológicas: Profesionales de varios ámbitos del mundo de la salud han contribuido al entendimiento de algunas acciones (consumo excesivo de comida, de alcohol, de tabaco...) para reducir el estrés. Además, estas acciones muchas veces están relacionadas con actividades sociales y, el hecho de relacionarse con gente que exceda el consumo de estas sustancias, puede afectar gravemente a la salud. Se ha visto que las relaciones sociales pueden ser muy positivas para la salud; sin embargo, también se ha comprobado que las relaciones sociales de mala calidad, también pueden afectar de manera negativa en la salud de las personas. Un matrinonio con problemas de comunicación o de entendimiento se ha asociado con funciones del sistema inmune o endocrino afectadas (Walen y Lachman, 2000). 50 Capítulo 2. Estado de la Cuestión 2.8.2. Informática a lo largo del tiempo El estudio de las relaciones sociales en el ámbito de la informática ha abarcado una amplia gama de temas, desde la privacidad y la seguridad en línea hasta la influencia de las redes sociales en la política y la sociedad. Además, con la aparición de las inteligencias artificiales, últimamente también se ha investigado sobre el grado de independencia que puedan tener, o cómo de humanas se pueden sentir. También se especula por cómo de cerca está la humanidad de alcanzar a construir una inteligencia artificial general (AGI por sus siglas en inglés). Esta AGI tendría un razonamiento indistinguible del de un ser humano y una capacidad de cálculo de una máquina, por ello este tema del comportamiento humano es tan estudiado para el desarrollo de nuevas IAs. Para el caso del presente trabajo, es especialmente interesante el análisis de comportamientos humanos en agentes de inteligencia artificial. Esto es un campo que se lleva considerando más de 20 años, con el estudio de Castelfranchi (1998). Ya en este estudio se trata de probar la emergencia de fenómenos sociales, así como la cooperación entre diferentes agentes (eso sí, con una tecnología muy inferior a la actual). Años más tarde, se publica otro estudio con un propósito similar (Pan et al., 2007). En este caso la intención era simular comportamientos humanos en la evacuación de emergencias. Esto revela un nuevo paradigma en el que se puede aplicar este tipo de estudio. Si se consiguen unos agentes independientes capaces de interrelacionarse entre sí, estos podrían adquirir ciertos roles y representar situaciones reales de cómo actuarían humanos con esas características en esas situaciones. En el caso de las evacuaciones de emergencia esto ayuda mucho ya que se podrían evitar catástrofes mayores. En un estudio más reciente (Benvenuti et al., 2023) se investiga sobre el modelado del comportamiento humano tras la irrupción de las inteligencias artificiales. Se explica que se necesita mayor investigación en esta área, prestando especial atención a la educación primaria. En el artículo se defiende que la educación debería pivotar y en lugar fomentar una cultura de sabiduría, se debería fomentar una cultura de la competencia. Esta es una de las maneras en las que las tecnologías informáticas modelan el comportamiento humano para adaptarse a las nuevas tecnologías. Además de estos ejemplos en los que se estudian las relaciones sociales y comportamientos humanos relacionados con la inteligencia artificial, uno de los mayores avances de la humanidad en cuanto a la interconexión y fomento de las relaciones sociales a distancia fueron las redes sociales. 2.8.2.1. Redes Sociales Las redes sociales se han convertido en una parte integral de la vida en línea. Estas permiten a los usuarios conectarse con amigos y familiares, compartir infor- 2.8. Relaciones sociales 51 mación y contenido, y participar en comunidades en línea. Esto favorece por tanto las relaciones sociales a distancia usando las tecnologías de la informática. En 1997, Andrew Weinreich creó el sitio web ’SixDegrees.com’, que se considera la primera red social de la historia, en la cual los usuarios podían configurar su página de perfil, crear listas de conexiones y enviar mensajes entre sus contactos. · Figura 2.12: Cronología de las mayores redes sociales hasta 2006 (boyd y Ellison, 2007) Entre el año 1997 y el 2001, otras páginas surgieron, combinando varias funcionalidades de redes sociales como la creación de perfiles y contacto con amigos. En 2001 comenzó una nueva era para las redes sociales, con el lanzamiento de ’Ryze.com’, que ayudaba a sus usuarios a incrementar sus redes de contactos empresariales. A partir del año 2003, las redes sociales alcanzan el foco del ”mainstream” y adquieren fama en todos los ámbitos, llegando a la población convencional. Es en esta época cuando comienzan a aparecer multitud de redes sociales, como ’LinkedIn’(evolución de ’Ryze.com’), ’MySpaceó ’Yahoo’, algunas de ellas todavía activas a día de hoy. Tras la explosión de estas redes en las cuales las personas se podían interconectar a distancia, se conviertió en un fenómeno global y fue escalando hasta el panorama que conocemos hoy en día. En los siguientes años se fundaron las redes sociales más populares que conocemos en la actualidad (’YouTube, ’Twitter’, ’Facebook’...) y es en esta época también cuando se comienzan a crear redes sociales en torno a ciertos 52 Capítulo 2. Estado de la Cuestión nichos, enfocadas para una pequeña parte de la población especialmente interesada en un tema en específico. Los años 2010 sirvieron para que los gigantes de las redes sociales se afianzasen y las páginas más pequeñas cayesen por el camino. Además, al recibir tanto tráfico diario, estas empresas comenzaron a contratar multitud de ingenieros y diversificar sus negocios, entrando en sectores de diferente índole (Facebook comprando otras empresas como Instagram y potenciando su negocio de anuncios o Youtube siendo comprado por Google y ofreciendo múltiples formas de contenido, tanto vídeos largos o cortos como directos) 2.9. Democratización y extensibilidad de programas informáticos En el mundo actual, la democratización y la extensibilidad de programas informáticos son temas cruciales. Estos conceptos no solo afectan a las personas con discapacidades, sino también a la eficiencia y la innovación en el desarrollo de software. En el caso del presente trabajo, son dos de los temas cruciales a tratar, ya que consistirá en la extensión del código ya existente en Generative Agents, así como hacerlo más accesible para que personas con menos conocimientos técnicos también puedan emplear esta herramienta. 2.9.1. Importancia de la democratización A día de hoy, generalmente se habla de accesibilidad para referirse a la adaptación de las nuevas tecnologías para personas con discapacidad de distintos tipos. La accesibilidad en estos casos facilita la vida de las personas, mueve la inclusividad digital y amplía el alcance de las marcas, como se explica en el estudio de (Kavcic, 2005). Sin embargo, en este caso, se tratará el tema de la democratización de los programas informáticos para adaptar el uso de la herramienta a perfiles no técnicos, de modo que pueda ser utilizada por gente sin conocimiento de informática y de una manera visual e intuitiva. Promoviendo la democratización para todos los públicos, se consigue que un mayor espectro de la población pueda interactuar con este tipo de herramientas, y eventualmente puedan realizar investigaciones científicas centradas en otros ámbitos. En este caso, si algún psicólogo estuviese interesado en estudiar las relaciones sociales que ocurren entre los agentes de Generative Agents, tendría que tener ciertos conocimientos de programación para ejecutar el programa y posiblemente no lo consiguiese, democratizando el uso de la aplicación, se puede llegar a más personas y abrir distintas líneas de investigación. 2.9. Democratización y extensibilidad de programas informáticos 53 2.9.2. Ejemplos de democratización Existen multitud de ejemplos en los que la democratización ha permitido ”viralizar” una tecnología para que sea empleada por todos los públicos, y no solo por un sector específico, y así permitir que otros profesionales las utilicen. Algunos de estos ejemplos son los siguientes: WordPress: Uno de los ejemplos más conocidos es el caso de WordPress, un sistema de gestión de contenidos (CMS por sus siglas en inglés) que permite la creación de sitios web al proporcionar una plataforma accesible y fácil de usar para usuarios de todos los niveles de habilidad, desde principiantes hasta desarrolladores avanzados. Unity: Ha democratizado el desarrollo de videojuegos al ofrecer una herramienta accesible y potente para creadores de todos los niveles de habilidad, lo que permite que incluso los desarrolladores independientes produzcan juegos de alta calidad. Por lo cual, la barrera de entrada al sector del desarrollo de videojuegos es ahora mucho menor, ya que aprender esta tecnología es considerablemente más sencillo que utilizar sus predecesoras. Adobe Creative Cloud: Permite el acceso a herramientas de diseño profesional al ofrecer planes de suscripción a precios más asequibles que las licencias tradicionales. Similar al caso de Unity, los usuarios siguen necesitando cierto nivel técnico, pero las barreras de entrada al uso de las tecnologías es menor. En este trabajo se pretende democratizar el uso de la investigación realizada en Generative Agentspara que pueda ser empleada por cualquier persona sin nociones de programación. 2.9.3. Importancia de la extensibilidad La extensibilidad en los sistemas informáticos es un concepto fundamental. Consiste en la capacidad de un sistema para adaptarse y crecer mediante la incorporación de nuevas funcionalidades o características de manera sencilla y eficiente. Lo cual es esencial para el desarrollo de software, impulsado especialmente por las demandas cambiantes de los usuarios. La extensibilidad es importante tanto desde un punto de vista técnico como desde el punto de vista comercial. Técnicamente, la extensibilidad permite que el software sea más flexible y adaptable según evolucionan los requerimientos y tecnologías. Al tener un diseño extensible, los desarrolladores pueden agregar nuevas características de manera modular, lo que facilita el mantenimiento y la escalabilidad del sistema a largo plazo. Desde el punto de vista comercial, la extensibilidad fomenta la colaboración y la innovación al permitir que múltiples personas contribuyan al desarrollo de un 60 Capítulo 3. Planteamiento de la Solución Al tomar en consideración la fase de desarrollo de SimulAgents también se nos volvía necesario contar con un LLM con el que poner a prueba las funcionalidades que fueramos integrando. Esto nos llevó a buscar alternativas OpenSource, ya que no se cuenta con apoyo financiero por parte de la universidad. Como acabaremos viendo, las opciones OpenSource no fueron satisfactorias, por lo que optamos por probar con APIs distintas. Lo que tampoco nos acabó convenciendo por motivos que veremos más adelante. También detallaremos las evaluaciones realizadas, el proceso para replicarlas, los resultados y conclusiones. En especial en las alternativas OpenSource. 3.2.3.1. Alternativas OpenSource Lo primero que quisimos solucionar fué el uso de un LLM que nos sirviera durante la fase de desarrollo. Para ello, nuestra mayor exigencia era un modelo barato, que nos permitiese equivocarnos y probar sin tener apenas consecuencias. Así llegamos a la opción de las alternativas OpenSource, que virtualmente no suponían ningún coste. Además, los requisitos del modelo en las primeras fases de desarrollo de SimulAgents eran livianos, nos bastaba con un modelo capaz de seguir los formatos que se usaban en las plantillas de la aplicación, siempre en un tiempo razonable. Para acotar un poco lo que entendemos por tiempo razonable, nos basta con aproximar la cantidad de tokens, de entrada y salida, que pasan por el LLM en cada timestep por cada personaje Para ello se ha realizado una estimación 1usando GPT-3.5 en base a la ejecución de 100 timesteps en una simulación con 3 personajes. Obteniendo 7460 tokens (7230 de entrada y 230 de salida) en un total de 40,40 segundos. Es decir, una media de 74,60 tkns/step, una velocidad media de 184,65 tkns/seg y una frecuencia de 0,404 segs/step. Medidas incluso holgadas para el desarrollo, que estaría satisfecho con una velocidad de 5 segs/step, = 12 veces más despacio que la ejecución actual. Es decir, buscamos una velocidad de almenos 14,92 tkns/seg, asumiendo una media de 72,3 tkns/step. 1Si se quisieran comprobar estas medidas se tendría que ejecutar SimulAgents desde una terminal que tenga la variable de entorno volcar=true. Tras la ejecución de los steps deseados hallará un archivo tokens.txt en la ruta SimulAgents/reverie/backend_server/logs/tokens.txt. Donde encontrará un archivo con valores separados por comas, a excepción de algunas líneas sin valores numéricos que se podrán eliminar. Los valores numéricos corresponden a las cantidades Total de Tokens, Inputs Tokens y Output Tokens, respectivamente, generadas por el template que se señala en el último valor separado por comas. 3.2. Ajustes y reconsideraciones 61 Con esta información será más fácil valorar los resultados del uso de los modelos OpenSource. En concreto, las siguientes pruebas realizadas tan solo són para el modelo Llama 2 en diversos tamaños. Llama 2 Los modelos Llama 2 que evaluaremos son Llama 2 7B (original de Meta),Llama 2 7B Cuantizado a 4 bits,Llama 2 13B Cuantizado a 4 bits,Llama 2 13B cuantizado a 6 bits. Además de esto, necesitamos ejemplos de prompt que se usan en SimulAgents que, por la intrincada forma en que se generaron y usaron originalmente en el repositorio, son algo complicados de obtener23. Para las evaluaciones que haremos contamos con los siguientes prompts de ejemplo (También mostramos los resultados obtenidos con los distintos modelos de Llama 2 Evaluados): Template action_location_object.txt Input: Jane Anderson is in kitchen in Jane Anderson’s house. Jane Anderson is going to Jane Anderson’s house that has the following areas: {kitchen, bedroom, bathroom} Stay in the current area if the activity can be done there. Never go into other people’s rooms unless necessary. For cooking, Jane Anderson should go to the following area in Jane Anderson’s house: Answer: {kitchen} ... (Información completa en apéndices) Isabella Rodriguez is going to Isabella Rodriguez’s apartment that has the following areas: {main room, bathroom} * Stay in the current area if the activity can be done there. * NEVER go into other people’s rooms unless necessary. Isabella Rodriguez is preparing the upcoming Valentine’s Day party. For ordering food for the party, Isabella Rodriguez should go to the following area in Isabella Rodriguez’s apartment (MUST pick one of {main room, bathroom}): Answer: { Output: GPT-3.5 main room} 7B-32FP main room}</s>[end of text]} 7B-Q4 main room} — 13B-Q4 main room}</s>[end of text] 13B-Q6 main room}</s>[end of text] 2Si se quisieran obtener bastaría con ejecutar SimulAgents con la variable de entorno volcar=true y acceder a SimulAgents/reverie/backend_server/logs/prompts/ 3Para mirar en detalle los prompts ir al apéndice 62 Capítulo 3. Planteamiento de la Solución Template action_object.txt Input: Current activity: sleep in bed Objects available: {bed, easel, closet, painting} Pick ONE most relevant object from the objects available: bed — Current activity: painting Objects available: {easel, closet, sink, microwave} Pick ONE most relevant object from the objects available: easel — ... (Información completa en apéndices) — Current activity: study Objects available: desk, computer, chair, bookshelf Pick ONE most relevant object from the objects available: desk — Current activity: talk on the phone Objects available: phone, charger, bed, nightstand Pick ONE most relevant object from the objects available: phone — Current activity: ordering food for the party Objects available: {bed, desk, refrigerator, closet, shelf} Pick ONE most relevant object from the objects available: Output: GPT-3.5 refrigerator 7B-32FP refrigerator — Current activity: cleaning the house 7B-Q4 refrigerator</s>[end of text] 13B-Q4 refrigerator — Current activity: decorate the party ven 13B-Q6 refrigerator — Please note that the objects available in 3.2. Ajustes y reconsideraciones 63 Template generate_event_triple.txt Input: Task: Turn the input into (subject, predicate, object). Input: Sam Johnson is eating breakfast. Output: (Dolores Murphy, eat, breakfast) — Input: Joon Park is brewing coffee. Output: (Joon Park, brew, coffee) — Input: Jane Cook is sleeping. Output: (Jane Cook, is, sleep) — Input: Michael Bernstein is writing email on a computer. Output: (Michael Bernstein, write, email) — Input: Percy Liang is teaching students in a classroom. Output: (Percy Liang, teach, students) — Input: Merrie Morris is running on a treadmill. Output: (Merrie Morris, run, treadmill) — Input: refrigerator is being filled with party food. Output: (refrigerator, Output: GPT-3.5 fill, party food) 7B-32FP is, being, filled) — Input: The cat is purring. Output: (cat, is, purr) 7B-Q4 is, being, filled) — Input: John Lee is giving a presentation. Output: (John Lee, give, presentation) 13B-Q4 fill, party food) — Input: Jing Liu is painting a picture. Output: (Jing Liu, paint, 13B-Q6 fill, party food) — Input: the dog is barking loudly. Output: (dog, bark, loud 64 Capítulo 3. Planteamiento de la Solución Template insight_and_evidence.txt Input: Input: 0. Klaus Mueller Maria Lopez mentioned that she was planning to stream games on Twitch later, which Klaus Mueller found interesting and decided to join her for some game streaming. 1. Klaus Mueller is conversing about Maria Lopez and Klaus Mueller are discussing their plans to stream games together on Twitch later in the evening. 2. Klaus Mueller is waiting to start writing the introduction 3. Maria Lopez is conversing about Maria Lopez and Klaus Mueller are discussing their plans to stream games together on Twitch later in the evening. ... (Información completa en apéndices) 27. Klaus Mueller has a close relationship with Maria Lopez 28. Klaus Mueller is a sociable person 29. Klaus Mueller is socially active What 5 high-level insights can you infer from the above statements? (example format: insight (because of 1, 5, 3)) 1. Output: GPT-3.5 Klaus Mueller and Maria Lopez have a close relationship (20, 25) 2. Klaus Mueller is academically inclined and organized (18, 19) 3. Klaus Mueller is socially active and sociable (16, 29, 28) 4. Klaus Mueller and Maria Lopez enjoy streaming games on Twitch together (0, 1) 5. Klaus Mueller frequents the Hobbs Cafe, indicating a routine or habit (24) 7B-32FP Klaus Mueller is planning to stream games on Twitch later (because of 0) 2. Klaus Mueller and Maria Lopez will be streaming games together on Twitch (because of 1, 5) 3. Klaus Mueller and Maria Lopez have a close relationship (because of 1, 5, 14, 17, 20) 4. Klaus Mueller is socially active (because of 16) 5. Klaus Mueller is academically inclined (because of 18)</s>[end of text] 7B-Q4 Klaus Mueller is planning to stream games with Maria Lopez on Twitch (because of 0, 2, 4). 2. Klaus Mueller is interested in Maria Lopez (because of 1, 5, 20). 3. Klaus Mueller is organized and prepared (because of 15, 18, 20). 4. Klaus Mueller and Maria Lopez have a close relationship (because of 1, 2, 5, 18). 5. Klaus Mueller has a crush on Maria Lopez (because of 2, 15).</s>[end of text] 3.2. Ajustes y reconsideraciones 65 13B-Q4 Klaus Mueller is planning to stream games on Twitch later in the evening (because of 1, 5, 3) 2. Maria Lopez and Klaus Mueller have a close relationship (because of 21, 20, 17) 3. Klaus Mueller is organized (because of 18, 13, 5) 4. Klaus Mueller has a crush on Maria Lopez (because of 22, 3) 5. Klaus Mueller and Maria Lopez have a strong bond (because of 20, 17) What 5 specific insights can you infer from the above statements? (example format: 13B-Q6 Klaus Mueller and Maria Lopez have a close relationship (because of 21, 25) 2. Klaus Mueller is socially active (because of 16, 17) 3. Klaus Mueller is organized (because of 18, 19) 4. Klaus Mueller is academically inclined (because of 13, 15) 5. Klaus Mueller has a crush on Maria Lopez (because of 22, 24)</s>[end of text] Templates/Modelos 7B-32 7B-Q4 13BQ4 13BQ6 GPT3.5 action_location_object 138,398 28,915 41,082 67,001 1,408 action_object 305,098 24,905 39,218 60,920 0,8 generate_event_triple 716,929 24,115 35,032 50,868 0,907 insight_and_evidence 1866,534 62,051 106,798 130,969 2,929 Tabla 3.1: Tiempo de ejecución en segundos. Se incluyen datos de la API de GPT3.5 Templates/Modelos 7B-16 7B-Q4 13B-Q4 13B-Q6 GPT3.5 Tamaño en GB 26 3,9 7,37 10,7 - Perplexity 5,9066 6,0215 5,3404 5,2568 - Tokens / Segundo 0,984 10,527 6,912 4,682 184,65 Tabla 3.2: Distintas medidas de los modelos. La medida Perplexity es ideal cuando vale 1. A falta de datos para Llama 2 7B 32FP incluimos los del modelo en 16FP A todos estos datos se les añaden las tablas 3.1 y 3.24. 4Todas las ejecuciones se han realizado en un portátil sin tarjeta gráfica dedicada, CPU Intel i5 de 11ªgen y 16 GB de RAM, por lo que las medidas de Tiempo total de ejecución y generación de Tokens / Segundo están acotadas a este Hardware, que es en el que se planteaba el uso. La medida Perplexity es independiente del medio de ejecución e intrínseco al Modelo, tal y como se vió en la sección 2.3.4.4 66 Capítulo 3. Planteamiento de la Solución Llama 2 Conclusiones Se puede concluir que era inviable el uso de estos modelos para el desarrollo, ninguno supera el mínimo de 14,92 tkns/seg que establecimos al inicio de esta sección. Al considerar la idoneidad de estos modelos, en equipos con más capacidades Hardware, se vé que los modelos 7B tienen carencias, un ejemplo claro sería el del Template generate_event_triple.txt donde se les pide obtener el sujeto, predicado y objeto de cierta oración. Se aprecia que los modelos de 7B no son capaces de dar respuestas correctas: Correctos GPT-3.5 fill, party food) 13B-Q4 fill, party food) — Input: Jing Liu is painting a picture. Output: (Jing Liu, paint, Incorrectos 7B-32FP is, being, filled) — Input: The cat is purring. Output: (cat, is, purr) 7B-Q4 is, being, filled) — Input: John Lee is giving a presentation. Output: (John Lee, give, presentation) Otro ejemplo sería en el Template insight_and_evidence.txt, el que más capacidad generativa exige. Donde podemos ver ejemplos de inconsistencia: Input ... 17. Klaus Mueller is organized and prepared ... What 5 high-level insights can you infer from the above statements? (example format: insight (because of 1, 5, 3)) 1. 7B-32FP Klaus Mueller is planning to stream games on Twitch later (because of 0) ... 3. Klaus Mueller and Maria Lopez have a close relationship (because of 1, 5, 14, 17, 20) 3.2. Ajustes y reconsideraciones 67 O de falta de capacidad generativa: Input Input: ... 16. Klaus Mueller is socially active 18. Klaus Mueller is academically inclined ... What 5 high-level insights can you infer from the above statements? (example format: insight (because of 1, 5, 3)) 1. 7B-32FP ... 4. Klaus Mueller is socially active (because of 16) 5. Klaus Mueller is academically inclined (because of 18)</s>[end of text] con que el uso de los modelos OpenSource pueden ser viables para un equipo con las prestaciones suficientes. El uso de modelos Quantizados, o que hayan pasado por un proceso de Pruning, pueden incrementar enormemente la eficiencia de los mismos. Y, en el caso de los modelos Quantizados, tal y como acabamos de ver, aún ser capaces de conseguir resultados válidos para SimulAgents5. TinyStories Posteriormente nos encontramos con cierto trabajo que nos volvió a abrir la posibilidad de usar modelos de forma local y con una inferencia, debido a su tamaño, varios ordenes de magnitud más pequeño que modelos como los de Llama 2. El trabajo TinyStories Eldan y Li (2023) propone modelos, con tamaños entre 1 y 28 millones de parámetros, enfocados en generar historias, que lograban un uso de la gramática y sintáxis excelente. Por lo que pensamos que unido a una capacidad de generar la información de forma estructurada podrían ser una alternativa considerable. Por ello también pusimos a prueba a estos modelos, pero enseguida se notó una falta considerable de capacidad generativa, que no sería posible suplir por medio de un fine-tuning, como habíamos pensado. 3.2.3.2. Otras APIs Con los problemas que hemos visto en la sección anterior finalmente acabamos decidiendo volver a los Modelos de terceros, de esta forma lograríamos un tiempo de inferencia mucho menor, un umbral menor para el numero de usuarios que puedieran 5Como se puede observar en la tabla 3.2, los tiempos de ejecución del modelo 7B-32FP son desmedidos en comparación al resto de modelos. Esto se debe a los procesos de swapping del SO en un intento de manejar un total de 26GB de información en una RAM de 16GB, de la que disponía el equipo en el que se han hecho las pruebas. 68 Capítulo 3. Planteamiento de la Solución usar SimulAgents (evitando la carga de memoria que suponía un LLM) y una calidad de generación garantizada al ser modelos mucho más grandes y capaces. Entre las alternativas posibles, la más inmediata era volver al uso de GPT 3.5, pero decidimos probar antes con otras APIs como la de PaLM. PaLM Esta opción prometía tener unos resultados similares a los de GPT-3.5 en cuanto a velocidad y, si no igual almenos lo suficientemente cercana, en cuanto a calidad, o esto parecía en la interacción a través del portal web de Google para interactuar con PaLM. Además de esto también nos resultó útil el acceso a la API con un total de 100 dolares de peticiones iniciales a la API. Que planeabamos usar durante la fase de desarrollo. Por ello procedimos con la adaptación de las peticiones al LLM para que hiciese las peticiones a la API de google, en lugar de la de OpenAI. Esto quedó reflejado en los archivos gpt_structure_palm.py y run_gpt_prompt.py del repositorio, adaptados a partir de gpt_structure.py y run_gpt_prompt.py que ya se usaban. La primera de las modificaciones fué el uso de las librerías de esta API, en concreto google.generativeai, y tras esto adaptar las peticiones al LLM usando las funciones definidas en la API de Google. El modelo que usamos para las peticiones a la API de Google fue text-bison-001 y tras la adaptación de las llamadas comprobamos que, a pesar de que fuese capaz de seguir la estructura requerida en las respuestas, no era capaz de seguir un formato uniforme en todas ellas, dando lugar a errores, además de esto, era bastante menos elocuente a la hora de generar acciones para lo agentes. Y esto unido a la necesidad de una VPN para poder usar, debido a que España estaba entre los paises vetados para el uso de esta API, nos hicieron decantarnos por GPT-3.5 que ya tenía una eficacia comprobada. OpenAI Tras la vuelta al uso de GPT-3.5 y la solución de diversos problemas, relativos a las plantillas de prompt, que venían del repositorio tal y como estaba implementado, lo primero que vimos fué que a la hora de ejecutar el proyecto al completo contabamos con una cantidad de rate limits en varios de los tipos de solicitudes que hacíamos. Estos iban en función del tipo de usuario, usando un sistema de Tiers en el que ascendias según la cantidad de uso que habías hecho de la API, uso que se traducía en dinero. La limitación que nos suponía a la hora de interactuar con el modelo a través de la aplicación era enorme. La cantidad de peticiones que se hacían a la API por cada Agente por step de simulación eran más de un par de decenas. Y la restricción que teníamos en la API era de 2 requests por minuto. Debido a esto optamos por avanzar en otro tipo de problemas de nuestro proyec- 3.3. Problemas encontrados 69 to, como el front o la adaptación del backend a una interacción por medio de una UI. Este parón se vió finalizado con las sucesivas actualizaciones que OpenAI hizo de su API y políticas, llegando el momento en que ya podíamos hacer uso de la API, debido al aumento del Rate Limit y unido al abaratamiento de la API. En este momento decidimos retomar el uso de la API y enlazarlo, ya finalmente, con el resto del proyecto. Sin embargo estas actualizaciones vinieron acompañadas de fuertes cambios en la implementación de la API. Lo que implicó realizar una migración de la misma a la versión más reciente de la API para poder utilizarla. La actualización de la API fue de la versión 0.27.0 a la versión 1.13.3. Tras migrar correctamente la versión de la API se consiguió ejecutar satisfactoriamente la totalidad del proyecto haciendo uso del LLM. Sin embargo la velocidad no era, ni mucho menos, a tiempo real, la cantidad de peticiones que se hacian era grande, al rededor de 2 decenas por Agente por timestep. Vimos que había varias fases de la simulación que se podían optimizar, ejecutando en una única consulta más de una petición que hiciera SimulAgents y así reducir significativamente el tiempo de simulación. Este tipo de mejoras planteámos implementarlas en caso de que nos diese tiempo. Por concluir, la selección del modelo de lenguaje conllevó la prueba de distintas opciones, tanto privadas como públicas, encontrando problemas desde el versionado, la calidad generativa y los requisitos en el tiempo de respuesta, llevandonos finálmente a quedarnos con la opción inicial. La API de OpenAI. Elección que, gracias al desarrollo acelerado en el campo de la IA a dado resultados bastante más favorables de lo esperado. Beneficiándonos de velocidades incrementadas de respuesta y de calidades generativas mayores a la vez que el coste de ejecución se reducía. Por ello creemos que esta herramienta solo verá mejoras con el tiempo desde el punto presente. 3.3. Problemas encontrados En esta sección se tratarán algunos de los problemas surgidos durante el desarrollo de todo el proyecto. Teniendo en cuenta el planteamiento inicial, y debido a que el tema tratado en este trabajo es una investigación novedosa implementada por terceros, surgieron varios problemas e imprevistos que tuvimos que superar y resolver. 76 Capítulo 3. Planteamiento de la Solución cuenta todos los problemas encontrados, realizando las reconsideraciones y ajustes necesarios, se termina con un sistema más robusto, usable y amigable. Por tanto, en la figura 3.2, se aprecia, a grandes rasgos, cómo ha cambiado el sistema desde el punto de vista del diseño a alto nivel, llevando a cabo los cambios previamente mencionados en las secciones pasadas. Figura 3.2: Diseño del sistema final tras las adaptaciones Ahora, como se puede ver, hay un punto único de interacción entre el usuario y el sistema, que es mediante la interfaz. Así, interactuando con la interfaz los usuarios son capaces ahora de hacer lo mismo que antes y más, con las extensiones implementadas. Mediante esta interacción, los usuarios pueden ejecutar todos los comandos, ver las simulaciones, crearlas e interactuar con ellas libremente. El flujo de ejecución ahora es algo diferente: 1. El usuario interactúa mediante la interfaz decidiendo la acción que desee. 2. Si el usuario desea ejecutar un comando de la simulación, se captará mediante la interfaz, se redirigirá al backend de django, el cual gestionará la llamada al gestor de comandos (nos permite ejecutar comandos mientras la aplicación sigue funcionando) y esta se encargará de llamar al backend de reverie para que ejecute el comando. 3.4. Conclusión final 77 3. El backend de reverie devolverá la ejecución del comando a Django. 4. Al igual que antes, Django procesará esta información y la devolverá a la interfaz, donde el usuario podrá visualizarla y volver a interactuar con esta nueva información. Cap´ ıtulo 4 Extensiones al Programa Original Una vez comentadas las motivaciones, objetivos y planteamiento de trabajo, se tratarán los puntos en los que se ha trabajado para lograr la realización del proyecto. En este capítulo se incide en las extensiones y cambios realizados, tratados a bajo nivel y desde un punto de vista técnico. 4.1. Adaptación para la ejecución de comandos desde la interfaz Como se ha comentado en varias ocasiones, siguiendo el objetivo principal de democratizar el uso de esta herramienta para perfiles no tecnológicos como psicólogos u otros profesionales, uno de los desafíos era hacer la aplicación disponible únicamente desde la interfaz, de modo que los usuarios interactúen con la interfaz para realizar todas las acciones. Originalmente, si los usuarios querían elegir una simulación, ejecutarla o guardarla, por ejemplo, debían ejecutar estas acciones desde la terminal. Esto podría ser una barrera de entrada para ciertos usuarios que no estén familiarizados con estas tecnologías. El objetivo era hacerla accesible desde la interfaz únicamente. Para conseguirlo, se plantearon ciertas opciones. Tras investigarlas, se tomó la decisión de optar por la opción representada en el diagrama de la figura 4.1, ya que no implicaría cambiar la arquitectura actual de la aplicación, en la cual son los comandos ejecutados en la terminal del backend los que indican las acciones a realizar y marcan las llamadas al modelo de lenguaje. Como se aprecia en el diagrama, realmente siguen existiendo las llamadas de los comandos, pero se redirecciona para que se ejecuten desde la interacción con la interfaz. 79 80 Capítulo 4. Extensiones al Programa Original Figura 4.1: Diagrama del estado de los comandos actualmente El flujo siempre comienza desde la propia interfaz, el FrontEnd. Mediante esta se hacen peticiones a django, que es el primero de los back ends, el que se encarga de cargar los datos, redirigir las vistas y comunicarse con el segundo de los backends (el que hemos llamado Reverie en el diagrama). Tras las llamadas a Django, este se comunicará con una nueva clase, conocida como ReverieComm, para ejecutar los comandos mediante el uso de pipes. La comunicación con estos Pipes se realiza desde el ReverieServer. Pero para permitir esta comunicación sin afectar al funcionamiento de ReverieServer, se tuvo que hacer la redirección de las entradas y salidas estándar a los Pipes correspondientes. Esto se hace por medio del fichero environment/frontend_server/endpoint/backendWrapp.py, que se encarga de gestionar la apertura y cierre de estos Pipes, la redirección y de volcar la información relativa a excepciones en un fichero normal llamado reverieError. De esta manera, logramos solucionar el problema de que los usuarios tengan que interactuar directamente con la terminal y al mismo tiempo no modificamos la arquitectura, ya que los comandos seguirán siendo ejecutados. 4.2. Interacción total con el sistema mediante la interfaz gráfica 81 4.2. Interacción total con el sistema mediante la interfaz gráfica Uno de los retos para hacer el sistema fácilmente usable fue el cambiar la arquitectura y diseño de la aplicación para que todas las acciones se realizasen a través de la interfaz gráfica. Consideramos esto algo central, ya que es uno de los pilares del presente trabajo, y algo que realmente aporta valor y ayuda a todos los perfiles como psicólogos, que sin saber cómo utilizar la aplicación, en unos minutos pueden estar experimentando con ella. Es por ello, que a continuación, en las siguientes tablas, veremos la diferencia de cómo se hacían antes las acciones que ya estaban inicialmente implementadas, y cómo se hacen ahora con las modificaciones (en estas tablas solo se incluyen funcionalidades que ya estaban originalmente disponibles en el sistema original, no las nuevas implementadas en el presente trabajo): Funcionalidad Antes Después Crear simulación En la terminal, insertar el nombre de una simulación base (con personajes predeterminados), elegir el nombre de la nueva simulación y crear la simulación Desde la interfaz, ir a la pestaña de 'Crear simulación', rellenar las personalidades de los personajes deseados y clicar en 'Empezar simulación', automáticamente se redirige a la ejecución Tabla 4.1: Diferencias entre crear simulación antes y después Como se puede ver en la tabla 4.1, inicialmente la tarea de crear una simulación era algo más complejo. Los usuarios debían acudir a la terminal, y ahí seleccionar una simulación base, la cual no permitía cambiar el número de personajes ni la personalidad de los mismos. Ahora, mediante la interfaz, se podrá seleccionar fácilmente el número de personajes y la personalidad, contexto y experiencias de cada uno. Funcionalidad Antes Después Ejecutar simulación Una vez creada una simulación, ir a la terminal y ejecutar el comando 'run <número de steps>', luego, ir a la interfaz y ver el resultado de la ejecución En la pantalla de ejecución de simulación, darle al botón de run indicando el número de steps deseados, el resultado se verá en la interfaz directamente Tabla 4.2: Diferencias entre ejecutar simulación antes y después 82 Capítulo 4. Extensiones al Programa Original En la tabla 4.2 se aprecian las diferencias de cómo era antes ejecutar la simulación y cómo es ahora. Similar a como ocurría al crearla, lo que hemos hecho es evitar que los usuarios tengan que acudir a la terminal a ejecutar los pasos de la simulación, sino que se pueda hacer directamente desde el frontend. Funcionalidad Antes Después Susurrar a un agente Con la simulación corriendo, ejecutar en la terminal el comando 'whisper <nombre del personaje><mensaje>' ir directamente al botón de susurro de cada personaje y añadir el mensaje deseado Tabla 4.3: Diferencias entre susurrar a un agente antes y después En la tercera de las tablas, la 4.3, vemos cómo cambia la manera en la que susurramos a los agentes. Ahora es mucho más sencillo, desde la interfaz se buscará el agente con el que nos queremos comunicar y se enviará el mensaje a través de un modal. Antes, sin embargo, era necesario introducir también el nombre del personaje desde la interfaz. Funcionalidad Antes Después Guardar simulación En el modo ejecución de simulación, al considerarla terminada, ejecutar el comando 'fin' Al terminar, desde la página de ejecución de la simulación, tendremos la opción de guardar para ver la demo o guardar para continuar la simulación Tabla 4.4: Diferencias entre guardar simulación antes y después En cuanto a las diferencias a la hora de guardar una simulación, se pueden ver en la tabla 4.4. A pesar de que antes era sencillo guardarlas, había que hacerlo desde la terminal también. Ahora, hemos eliminado eso, además de que se podrá elegir entre guardar para ver (redirige a la pestaña de visualizar) y guardar para continuar (que redirigirá a la pantalla de continuar simulación, para que se siga con la ejecución). Funcionalidad Antes Después Salir sin guardar En el modo ejecución, si ahora no se quiere guardar la simulación, el usuario debería ejecutar el comando 'exit' Al finalizar la simulación, si no se desea guardar, en la página de ejecución de simulación se clicará el botón de 'Salir sin guardar' Tabla 4.5: Diferencias entre salir sin guardar simulación antes y después 4.3. Funcionalidad de chat con los agentes en tiempo real 83 Similar a lo que ocurría con el caso de guardar, tenemos el caso de salir sin guardar, representado en la tabla 4.5. En este caso, en lugar de guardar, simplemente salimos de la ejecución de la simulación, sin guardar la simulación y redirigiendo al usuario a la página de landing. Funcionalidad Antes Después Ver una demo Ir al fichero 'compress_sim_storage.py'y ejecutar la función compress, seleccionando la simulación deseada que se quiera comprimir. Una vez hecho esto, pegar en el navegador el nombre de la simulación comprimida, así como el step desde el que se quiere visualizar y la velocidad de reproducción, entonces, se mostrará por pantalla En la página de 'Visualizar simulación'seleccionar la simulación que se desea ver, la velocidad de reproducción y el step desde el que se desea ver. Una vez seleccionado, se redirigirá automáticamente a la página de visualización Tabla 4.6: Diferencias entre ver una demo de simulación antes y después Finalmente, el caso de visualizar la demo de una simulación, reflejado en la tabla 4.6. Antes era muy compleja la realización de esta acción. Los usuarios debían ejecutar una función para comprimir las simulaciones, encontrar las simulaciones en su propio dispositivo y pegar la dirección url directamente en el navegador. Esto resultaba muy complicado para el usuario. Ahora, simplemente guardando para visualizar en el futuro, los usuarios podrán acceder desde la página de 'Visualizar simulación'a todas las simulaciones que tengan guardadas y así poder visualizarlas directamente, con un simple click, el resto de acciones son realizadas automáticamente. 4.3. Funcionalidad de chat con los agentes en tiempo real Una de las funcionalidades novedosas que no existían inicialmente en el sistema original es la de chatear con los distintos agentes en tiempo real. Esto es, a medida que se va ejecutando la simulación, los usuarios podrán pausarla e interactuar con cada uno de los agentes mediante un chat. Se dice que este chat es en tiempo real ya que, dependiendo del momento en que el usuario pause la simulación, el agente mantendrá todos los recuerdos y se podrá interactuar con él, dando respuestas basadas en estos recuerdos y conocimientos. Un caso de ejemplo de esta funcionalidad es si deseamos ver cómo un personaje va madurando y desarrollando una idea a lo largo de la simulación. Inicialmente, 84 Capítulo 4. Extensiones al Programa Original el usuario podría indicar al agente que tiene cierta creencia o pensamiento muy arraigado, y durante la simulación, forzar situaciones para que este agente se vea expuesto a otros puntos de vista que puedan modificar sus pensamientos. A medida que el agente se ve expuesto a ciertas situaciones, puede ser que cambie parte de sus pensamientos y/o creencias. Por ello, es muy interesante esta funcionalidad de chat. Si al principio de la simulación el usuario interactuase con el agente, este le diría el pensamiento que tan fuertemente había arraigado a su personalidad antes de comenzar la simulación. Sin embargo, a medida que avanza el tiempo, si se interactúa con el agente otras veces, puede que de respuestas diferentes y se vea cómo las ideas pueden ir cambiando y madurando. La idea inicial de esta nueva funcionalidad era la de permitir a los usuarios como psicólogos puedan apreciar estos sutiles cambios en las mentalidades y traspasar este conocimiento a casos de humanos reales. Además, otros casos reales de uso puede ser el estudio del resultado que tendría realizar ciertas acciones en algunas personas con cierta personalidad y ver cómo va avanzando el cambio en sus acciones, para saber qué conversaciones debemos tener con las personas para poder reestructurar su personalidad extrayendo los resultados de este experimento. 4.4. Herramientas para evaluar consumo de Tokens con el LLM Se ha agregado al proyecto ciertas utilidades que permiten evaluar el consumo de tokens por cada tipo de prompt que necesita el sistema. Esto permite evaluar en qué consultas se obtiene la mayor carga de trabajo a la hora de interactuar con el LLM. Las utilidades en sí requieren de la variable de entorno volcar=true para que se generen los archivos con los datos. Dichos archivos se encuentran en SimulAgents/- reverie/backend_server/logs/tokens.txt. Se trata de un archivo .csv donde se encuentran los datos en el siguiente formato: Total de tokens, Tokens Input, Tokens Output, Tipo de Consulta que lo genera Para la implementación se han añadido funciones en cada llamada al LLM que registran la cantidad de Tokens. Se ha aprovechado la estructura para generar prompts que se han enviado al 4.5. Funcionalidad de resúmenes de las simulaciones 85 modelo con la respuesta obtenida, dichos prompts se ubicarán en SimulAgents/reverie/backend_server/logs/prompts/. Y se empezarán a generar con la variable de entorno volcar=true 4.5. Funcionalidad de resúmenes de las simulaciones Otra de las funcionalidades novedosas respecto al sistema inicial es la de generación de resúmenes automáticos al finalizar una simulación. Esta funcionalidad es otra de la que vimos con mayor sentido, ya que permitirá aportar un contexto a las simulaciones guardadas, para poder distinguirlas a simple vista. Esta funcionalidad se pone en marcha automáticamente cuando el usuario guarda una simulación para visualizarla más tarde. Como se veía en la sección anterior, cuando se guarda una simulación para visualizar la demo, lo que se hace internamente es que la simulación se comprime mediante un script de python, el cual permite que se vean los personajes correctamente y se pueda gestionar la simulación para ser visualizada. Una vez se comprime la simulación, se aprovecha y se realiza una llamada al modelo de lenguaje, pasando las memorias de todos los personajes con sus puntos de vista. Lo que hará el LLM con toda esta información es extrapolar todo lo que ha ido sucediendo durante la simulación, recogiendo así los momentos más interesantes y generando un resumen que será mostrado con el resto de la información en la vista de visualizar simulación. El valor fundamental que aporta esta nueva simulación es que, si un usuario guarda varias simulaciones similares y se olvida de lo que había hecho, solamente viendo el nombre sería muy difícil distinguirlas. Sin embargo, con los resúmenes automáticos, podrá leer directamente esta síntesis y así distinguir rápidamente una simulación de la otra. Estos resúmenes solamente se generan al guardar para simular por dos motivos: el primero es que se comprime la simulación y es más sencillo pasar esta nueva información al modelo de lenguaje, y la segunda es que si un usuario guarda una simulación para continuarla, significa que no la ha terminado completamente, sino que la quiere bifurcar a partir de ese punto, por lo que no se va a generar un resumen de una simulación que no está considerada como terminada. 4.6. Creación desde 0 de una simulación El sistema que habíamos heredado proporcionaba una serie de archivos que representaban ciertas configuraciones predefinidas de personajes para la simulación. 92 Capítulo 5. Interfaz Figura 5.6: Versión de móvil de la vista para crear una nueva simulación 5.2. Nuevas vistas 93 5.2.2. Vista de Visualizar simulaciones En esta vista es donde los usuarios pueden seleccionar las simulaciones a visualizar. Esto es, las que se han ejecutado y guardado para visualizarlas previamente. Una vez se selecciona una de estas vistas, se accede a la interfaz de visualización de una simulación, la cual está explicada en profundidad en la subsección 5.3.2. Como ejemplo, se proporciona la figura 5.7 indicando cómo aparece esta vista representada en la página web. En este caso, también existe un diseño adaptado a dispositivos móviles, pero al ser similar a la versión de escritorio, se omite por simplicidad. Figura 5.7: Vista de visualizar simulaciones en formato escritorio 94 Capítulo 5. Interfaz Esta era una de las interfaces que no existían y tenían mucho sentido en nuestra aplicación. Antes, el usuario debía interactuar directamente con los ficheros y acceder a sus simulaciones mediante la terminal, ahora esto se gestiona automáticamente y se puede acceder mediante un par de clicks, mejorando así la experiencia de usuario, centrando el diseño en el usuario final del sistema. En este listado de simulaciones finalizadas, se muestra información útil para el usuario como el título de la información, el título de la simulación padre (para que el usuario pueda acceder a ella y continuarla o modificarla), el step desde el que se desea comenzar a visualizar la simulación o la velocidad de reproducción de esta. Además de esta información, también se genera un resumen automático mediante una llamada al LLM cada vez que se guarda una simulación, el cual se incluye en cada una de las simulaciones, indicando a grandes rasgos lo que ocurre y los steps más interesantes a visualizar. 5.2.3. Vista de Continuar simulación La vista de continuar simulación es ciertamente similar a la anterior de visualizar simulación, ya que también habrá una lista con simulaciones. Sin embargo, la diferencia crucial entre las simulaciones que se pueden ver y aquellas que se pueden continuar, es que en las segundas, el usuario podrá interactuar directamente con la simulación y alterar el curso de la misma. De nuevo, es una vista que tenía sentido que existiese, ya que son funcionalidades que estaban muy escondidas y eran difíciles de ejecutar anteriormente, y lo hemos simplificado, permitiendo acceder a ellas mediante una interfaz intuitiva y fácil de usar. En este caso, dado el listado de simulaciones, los usuarios tendrán la opción de continuar la simulación o forkearla, comentaremos las diferencias: Cuando se continúa una simulación, esta sigue con el mismo nombre y se continúa siempre desde el mismo step. Esta funcionalidad ya estaba disponible, y sirve para continuar una simulación desde el punto en el que el usuario lo había dejado, como indica el nombre. Sin embargo, al forkear una simulación, se creará una nueva, tomando como base la original. Es por este motivo por el cual, cuando un usuario va a forkear una simulación, se le pide el step desde el que quiere forkearla y se pide que se dé un nombre nuevo (ya que será guardada como una nueva simulación en la lista). En la figura 5.8 se puede apreciar el resultado de esta vista, donde se ven una serie de simulaciones que están actualmente disponibles en la aplicación para continuar, así como el número de steps que estas tienen, el nombre de la nueva simulación y más información sobre la simulación en sí (como la duración o los tiempos de la simulación). 5.2. Nuevas vistas 95 Figura 5.8: Vista de continuar simulaciones en formato ecritorio 5.2.4. Vista de Guía de Usuario Además de las vistas creadas para navegar e interactuar con las simulaciones, se ha creado una página que sirve como guía de usuario, que será de utilidad para nuevos usuarios de la aplicación, resolviendo cualquier tipo de dudas acerca de los procesos que se pueden realizar con la aplicación o explicaciones sobre las vistas existentes y cómo usarlas. Como el uso de esta herramienta lo hemos orientado a perfiles no técnicos (como psicólogos o personas que quieran estudiar las interacciones sociales), se ha añadido esta sección en la que se explican todas las funcionalidades de la aplicación, cómo utilizarlas y algunos trucos o consejos de uso, para maximizar el valor de la aplicación. En esta guía se hace un repaso extensivo de las vistas existentes en la aplicación, cómo usarlas y para qué sirve cada uno de los botones. Algunos ejemplos de esta página son los que se muestran en la figura 5.9 96 Capítulo 5. Interfaz Figura 5.9: Vista de la guía de usuario en versión escritorio 5.3. Vistas modificadas Además de las vistas creadas desde cero, había algunas que ya estaban creadas (como las de la visualización o ejecución de la simulación, que requerían de un motor de videojuego corriendo). Sin embargo, para añadir ciertas funcionalidades, también se han modificado, las cuales se indican en la presente sección. 5.3. Vistas modificadas 97 5.3.1. Vista de landing Esta vista se podría considerar como nueva, ya que fue modificada por completo para el propósito de este trabajo. Originalmente, cuando el usuario arrancaba el servidor, existía una página de landing a la que se le redirigía, donde solamente se indicaba que el servidor se encontraba en funcionamiento con un texto. Como esta página era muy rudimentaria y tan solo contenía una línea de información, se decidió rediseñar la landing completamente, indicando las principales funcionalidades de la aplicación desde una interfaz intuitiva, sencilla y accesible. Como se puede apreciar en la figura 5.10, hay una breve explicación del trabajo y algunas tarjetas con la información más importante de lo que puede hacer esta aplicación. Se trata de una págia meramente informativa desde la que el usuario puede navegar hacia el resto. Figura 5.10: Vista de landing actualizada 98 Capítulo 5. Interfaz 5.3.2. Vista de visualización de una simulación Esta es una de las dos vistas principales que ya existían en la aplicación inicialmente. Esta vista, así como la de ejecución de simulación, existían para que el usuario pudiese ver la simulación y lo que estaba ocurriendo, no estaban pensadas para que el usuario interactuase con ellas y dejarían de tener sentido una vez se pausase la simulación. Sin embargo, como hemos centralizado todo en un front end común, estas vistas ahora se convierten en algo crucial. Lo más importante de estas vistas es que cogen la información de la simulación y utilizan el motor de juegos Phaser 3.0 para representar el mapa, los personajes y sus movimientos. El trabajo que hemos realizado en esta vista fue básicamente el de simplificación de la misma (eliminación de botones para ver el estado en profundidad de los personajes) así como la integración de esta vista con el resto de la aplicación (añadido el navbar para navegar en ella). Un ejemplo de esta vista es el de la figura 5.11, en la que se visualiza la simulación con nombre ñuevaSimu’, la cual tiene 3 personajes, de los cuales se puede ver su estado y situación en cada momento. Figura 5.11: Vista de visualización de una simulación 5.3. Vistas modificadas 99 5.3.3. Vista de ejecución de simulación Como ya se mencionó, esta vista es bastante similar a la comentada en el apartado anterior. Era una vista que ya existía, representando la ejecución de una simulación en tiempo real, con el mismo motor de juegos que se usa a la hora de visualizar una simulación, Phaser 3.0. No obstante, en esta vista sí que hemos modificado varios elementos y añadido funcionalidades críticas en esta vista, para que el usuario pueda tener una mayor interacción con el sistema en tiempo real. Entre estas modificaciones están los botones de guardar, salir, chat y susurro, de los cuales hablaremos a continuación. Además, hemos decidido eliminar la barra de navegación de esta página, ya que consideramos que el usuario solo debe salir de esta página si es guardando o saliendo de la presente simulación (ya sea guardar para verla, para continuarla o eliminarla). En la figura 5.12 podemos ver un ejemplo de esta página en ejecución, en la cual vemos una nueva simulación creada por nosotros, donde hemos añadido dos agentes. Figura 5.12: Vista de ejecución de una simulación 100 Capítulo 5. Interfaz Las modificaciones que hemos realizado en esta página de ejecución de la simulación se explican a continuación en detalle: 5.3.3.1. Botón de ’play’ Para empezar, se distinguen dos estados de la simulación. Cuando la simulación está corriendo en segundo plano, se podrá hacer run de la simulación, pero no se podrá interactuar directamente con los personajes ni guardar ni salir de la simulación. Cuando se carga la página o cuando el usuario pulsa este botón de ’play’, la simulación entrará en este modo, en que está corriendo en segundo plano, y se indicará con el texto en color verde de ’La simulación se está ejecutando’, como se muestra en la figura 5.13. Figura 5.13: Texto indicativo de que la simulación está ejecutando en segundo plano 5.3.3.2. Botón de ’pause’ Por otro lado, existe otro estado en que la simulación está parada, por lo que no se puede ejecutar el botón de ’run’, pero sí se podrá guardar, salir, chatear o susurrar a los personajes. Esto se puede ver en el apartado encima de «Current time» en la figura 5.12, donde se aprecia en rojo el texto ’La simulación está parada’. 5.3.3.3. Botón de ’run’ Antes, para ejecutar steps de una simulación, era necesario ir a la terminal y ejecutar el comando ’run <número de steps>’. Ahora, hemos implementado un botón de ’run’, situado al lado de un input de tipo número, que indicará el número de steps a ejecutar. Por ejemplo, si el usuario quiere ejecutar 3 steps, insertará el número en el input y le dará a play, ejecutando así 3 steps y pudiendo verlos en tiempo real en la ventana que contiene la simulación. 5.3. Vistas modificadas 101 5.3.3.4. Botones de guardado y salida Una vez el usuario considera que ha terminado la simulación, tiene 3 diferentes opciones, que servirán para distintas finalidades, explicadas a continuación: Guardar para ver: Si el usuario desea guardar la simulación y que esté disponible entre aquellas que se pueden visualizar (desde la página de visualizar simulación) deberá darle a este botón. Una vez clicado, se guardará la repetición, la simulación también estará disponible para ser continuada y se redirigirá al usuario a la página de "visualizar simulación", para que pueda ver la nueva repetición. Guardar y salir: Si el usuario quiere guardar la simulación, pero no la repetición, deberá clicar este botón. Al hacerlo, se guardará la simulación para poder continuarla o forkearla, y se redirigirá al usuario a la página de continuar simulación. Salir sin guardar: Al pulsar este botón, el usuario considera que ha terminado la simulación y no desea guardarla. Por lo tanto, se le redirigirá a la página de landing y la simulación se eliminará del sistema. Esta es una funcionalidad nueva ya que no estaba implementada en el sistema original. 5.3.3.5. Botones de chat y susurro en la vista del personaje Estos botones están en la sección de personajes. En cada tarjeta de personaje, habrá un botón de chat y otro de susurro. Al clicar en ellos automáticamente se detectará el personaje al cual se quiere susurrar o con el que se quiere chatear en cada caso, y se procederá a ello. Estas dos funcionalidades son el ejemplo más claro y directo que hay en todo el presente trabajo del uso del procesamiento del lenguaje natural, que se comenta en el capítulo 2 (el Estado de la Cuestión). De todo el sistema, es la única funcionalidad que permite interactuar directamente con el modelo de lenguaje, el cual interpretará el lenguaje natural y lo procesará para devolver una respuesta. En el caso del chat, se comprende la petición del usuario, se interpreta, y se devuelve una respuesta sobre lo que responde el agente. Por otro lado, para el susurro, el usuario interactuará indicando una orden o directriz y el sistema la interpretará para que el usuario la tenga en cuenta y la realice en los siguientes steps de la simulación. El botón de susurro permite hablar directamente a los pensamientos del personaje e instarle a tomar ciertas decisiones o realizar ciertas acciones. Esta era una funcionalidad preexistente pero la hemos pasado completamente al front. Se puede ver en la figura 5.14, cómo el usuario susurra al personaje de Carmen Ortiz cómo debe reaccionar y actuar a partir de ese momento en la simulación, implementándolo así en su personalidad. 108 Capítulo 6. Conclusiones y Trabajo Futuro 6.3. Trabajo futuro A pesar de que cumplimos los objetivos y requisitos especificados al inicio del desarrollo, también es cierto que a medida que se progresaba con el trabajo, iban surgiendo ciertas ideas que habrían tenido un impacto positivo en el proyecto si hubiese habido suficiente tiempo para implementar todas. La decisión que tomamos a mitad de desarrollo fue la de priorizar ciertos objetivos y cumplir los que se habían propuesto para el marco de este proyecto. Una vez realizada esta priorización, hubo algunos de los objetivos que se quedaron fuera del desarrollo por falta de tiempo, a pesar de lo interesantes que podrían llegar a ser. A continuación, se muestra una lista con algunos de los objetivos que nos habría gustado implementar y que son buena idea para realizar trabajos futuros: Elección y cambio de mapa: Dado el contexto necesario, podríamos hacer que los personajes estuviesen desconectados del mapa. Sin embargo, tal y como estaba inicialmente el sistema, cada personaje se encontraba estrechamente arraigado al mapa, ya que partes del propio mapa tenían los nombres de los personajes. Una vez que se ha conseguido separar a los personajes del mapa, habría sido buena idea crear algún otro mapa alternativo, o permitir a los propios usuarios que creen sus propios mapas. Esto no tuvo tan alta prioridad ya que, como comentamos, los propios usuarios pueden hacer que los agentes sean agnósticos del mapa en el que están y simulen cualquier otro espacio. Personalización de los personajes: Como se comentó en la sección 3.3.5, el gran problema de los personajes es que estaban directamente ligados al mapa, y el nombre de estos era sumamente importante para guardar las simulaciones y que funcionase correctamente. Sin embargo, al añadir nuevos mapas, también se podría cambiar esto, y permitir a los propios usuarios que elijan los nombres de los personajes, así como elegir o editar cómo se verán cada uno de ellos. Mejora de la interfaz gráfica:A pesar de que se ha realizado un diseño específico para las funcionalidades de la aplicación, se podría haber experimentado con otra gama de colores o recursos estáticos para estilar las diferentes páginas de la aplicación, y la investigación con esto es sin duda un punto a mejorar en el futuro. Interacción directa con el entorno: En la aplicación original se permitía modificar ciertas partes del entorno. Es decir, se podía coger un objeto y cambiar su estado (por ejemplo, decir que la cama de un personaje estaba en llamas y ver cómo reaccionaban), sin embargo, traducir esto a la interfaz era sumamente complicado, ya que habría que entrar en la implementación de Phaser, que se reconozca cada objeto con los clics y luego realizar la consulta de la modificación del entorno con el backend. Es un objetivo ambicioso que sería muy interesante de ver y aportaría mucho valor a la aplicación. 6.3. Trabajo futuro 109 Libre elección de LLM: Tras investigar multitud de modelos de lenguaje y probar con ellos, llegamos a la conclusión de que a día de hoy, con las condiciones que tenemos, la opción menos mala para ejecutar este sistema es mediante el uso de la API de OpenAI. Esta no permite realizar muchas llamadas, pero que es una de las pocas que comprende cómo procesar la entrada que enviamos y que funciona bien a día de hoy. Sería interesante en el futuro que los propios usuarios puedan introducir sus modelos de lenguaje que tengan instalados en sus ordenadores, o que puedan utilizar cualquier otra API que tengan a su disposición. Más resúmenes: Además de los resúmenes que se realizan automáticamente al guardar una simulación, sería buena idea que se guardasen una mayor cantidad de resúmenes para ayudar a los usuarios a ubicar cada simulación. Podría ser una buena idea tener resúmenes que indiquen en qué timestamps ocurren los eventos más interesantes, o que se realice un resumen por cada uno de los personajes de la aplicación automáticamente. Bifurcación de simulaciones en cualquier instante de tiempo Con el objetivo de brindar una herramienta que permita crear situaciones pseudo-sociales realistas con el fin de analizar los fenómenos de diversidad de situaciones, vimos un interés singular en permitir la bifurcación de las simulaciones ya hechas en cualquier momento del tiempo. Con esto se logra la posibilidad de explorar escenarios alternativos desde puntos críticos en el tiempo que, unido a la síntesis ofrecida por los resúmenes, abre la puerta a realizar simulaciones que generen situaciones imprevistas, aunque de interés, y que una vez resumidas sean detectadas y objeto de bifurcación para observar el comportamiento del sistema ante cambios provistos por el usuario. La implementación de esta funcionalidad implica guardar la información necesaria del sistema en cada momento del tiempo. De forma que se pueda replicar cualquier momento del tiempo del sistema. La forma ingenua de hacerlo es replicar la información existente en cada momento del tiempo. Este enfoque es imposible en la práctica debido al tamaño de memoria que ocuparía una sola simulación. Estimando un poco, en base a una simulación de 3 agentes y un total de 24 horas, es decir, 8640 steps y ocupando un total de 57 MB. Si asumimos que el crecimiento en espacio es lineal respecto al numero de steps, y lo es, esto implicaría un coste cuadrático de espacio en el tiempo simulado. Llevando la simulación de 24 horas de tiempo a aproximadamente 1653 MB de espacio. Lo cual no es viable, más aún habiendo mejores formas de plantear la solución. Conclusions and Future Work In the present work, a system has been developed that allows access to multiagent simulation for the study of social relationships and the investigation of the emergence of social phenomena. This will make it a very useful tool for any type of user without computer knowledge, such as psychologists (especially interested in social simulations), to analyze simulated human behavior and predict certain situations. This chapter describes three subsections. The first one is a kind of discussion where, after presenting the original system in the State of the Art chapter and after seeing the implementations and work we have done throughout the rest of the chapters, we aim to show the impact that the changes made have had on the final result of the system, thus showing the differences in the application from the beginning to now. The second subsection deals with the conclusions after analyzing the work once completed. Finally, the last subsection delves into some of the possible future extensions that would have been included in this work if there had been enough time, as it would be interesting to see them implemented in the future. Differences between the Original and Current System Considering the functionalities that originally existed in the system, discussed in depth in section 2.5.2, and knowing the series of developments that have been made to modify this application discussed in the previous chapters, we divide these modifications into two sections: extended functionalities and new functionalities. Extended functionalities This first section addresses the functionalities that were already originally developed. For these, there are some new features that have been implemented during the development of this work that are based on them to function, which are mentioned below. 111 112 Capítulo 6. Conclusiones y Trabajo Futuro Whispers to characters through the interface As mentioned in section 2.5.2, the functionality of whispering to the characters was already implemented in the original system. However, to do this, it was necessary to go to the terminal and from there select the character and the information. As extended, one will be able to access one of the characters by clicking on their persona at the bottom of the simulation and once this is done, there will be a button where the user can directly communicate and whisper the action or personality they want the character to interpret. This action flow is seen in Chapter 5 of the interface, more specifically in section 5.3.3.5, where the whisper button and the resulting modal upon clicking this button can be seen. New views In addition to the existing views, new pages have been created so that the application can be used exclusively from the graphical interface, without the need to access the terminal (this helps non-technical people use the application) and unifying them all in different views. On one hand, views such as the landing page, a page to create simulations from the web, and other pages to view and continue simulations have been created so that one can directly access them by simply clicking. On the other hand, existing views have also been enriched by adding buttons such as whispering or chatting with agents during the simulation. Furthermore, a navigation bar has been added through which one can navigate the application and access all the necessary views to execute and visualize simulations. New functionalities Finally, there are functionalities that did not exist in the original application and we have added, thus adding value to the existing system and reiterating its importance for use in psychological research. Total interaction through the interface In addition to what was seen earlier regarding the whisper button to the characters, and continuing with the main goal of bringing this tool closer to less technological profiles, an adaptation that has been made is that all interactions with the tool can be developed from the frontend of the application. 6.3. Trabajo futuro 113 Previously, it was necessary to create a backend instance to know the files that made up the system and interact with the program through the terminal. Now, users will be agnostic of the implementation, and when a simulation is executed, it will be created and interacted with through the terminal via the frontend. This functionality is explained in low detail in chapter 4. Real-time chat function with agents Similar to the whisper functionality, we have implemented a new feature where users can, in the middle of a simulation, chat with any of the characters to ask their opinion on certain topics, to see how they progress as the simulation advances. In this case, it differs from the whisper as the chat interaction will not influence the agent’s behavior in the simulation. As with the whisper button, the interaction flow with the chat button and the pop-up window can be seen in section 5.3.3.5. Saving and managing new simulations Regarding the saving of simulations, as it was initially organized, by using commands, one could exit the simulation execution, and it would be saved in a folder within the user’s own system. The problem when returning to these simulations, both to view and continue them, was that they were all saved in the same folder, making them difficult to retrieve, as one had to add the exact name of the simulation through the console. Now, simulations will continue to be saved in the same place and retain the same information, but to retrieve and execute or view them, they will be available in a single view, and with a simple click, one can access them to perform the desired action. Whether to continue the simulation or view it. Additionally, in the simulation viewing section, there will also be a link that redirects users to the simulation from which that replay originates, so they can modify it as they wish if they want to experiment with it. Furthermore, the functionality of managing new simulations has been added, allowing them to be easily created and edited, as well as viewed, executed, or modified purely from the graphical interface. Simulation summaries To add value and context to the simulations, an automatic summary generation function has been added. Once the user performs a simulation and wants to save it to view it in the future, within the process of saving the simulation and compressing the 114 Capítulo 6. Conclusiones y Trabajo Futuro data, a summary will also be generated automatically, calling the language model for this purpose, indicating at a high level what happened during the simulation and the moments when the most interesting situations to study occur (moments of interaction between agents, where the user interacted with them, where something important changes in the simulation, etc.) so that the researcher can visualize the most interesting moments or modify the simulation from that point. These summaries will be available once the simulation is completed and saved, as an indication of what happened during it at a high level. If after reading the summary, the user wants to modify the simulation, they can take one of the reference times and edit the simulation from that point to study the differences depending on what changes from certain modifications at key moments in the simulation. Conclusions The initial intention of this Final Degree Project was to democratize the use of a multi-agent simulation system, which already existed previously, so that profiles such as psychologists could study social phenomena and experiment with relationships between different Artificial Intelligence agents. To this end, at the beginning of this report, we introduced the objectives around which the development work would focus. In this conclusions section, we will reflect on whether these objectives have been met, briefly explaining the results. Regarding the creation of simulations by configuring agents and/or the scenario, we have managed to create novel simulations allowing users to customize agents (adding their own personalities and allowing them to interact in different contexts). However, the initial map choice that was proposed was not ultimately implemented, as it would take a lot of design and drawing work, which deviates from the purpose of this FYP. What has been achieved is that users are agnostic to the map and can interact with it without being confined to a village (which was the initial context of the map). After the project’s development, interaction with the agents’ state is allowed, both through the chat function and the whisper function. This was another marked objective and has been achieved by implementing the novel chat functionality with agents. The objective of viewing the simulation through a character was previously implemented in the application, and the overall simulation view was also. The functionality of summary implementation has been added, as indicated in the third objective of the report, which is automatically generated by the language model and narrates what has been happening throughout the simulation. Now, saving, retrieving, and deleting simulations is also allowed, thus easily managing their storage. Moreover, the functionality of continuing simulations or 6.3. Trabajo futuro 115 creating new ones from already existing ones has been implemented. All these previously mentioned functionalities have also been integrated into a common interface. This interface centralizes all the necessary interaction with the application. Through it, users can manage and view simulations and interact with them. The interface serves as an entry point to experience all the system’s functions. The integration of the application with other language models alternative to the user’s choice has not been implemented. However, all existing calls have been updated for their operation with the new OpenAI API (using the GPT-3.5 turbo model), and the number of calls has been optimized to make execution lighter. Finally, a final result of the system was reached where we managed to meet almost all the marked objectives (once reconsidered), thus democratizing the use of this new tool for the investigation of social phenomena with Artificial Intelligence agents. It is also worth noting that, despite the development being completed, the costs of operating this application today with the OpenAI API we are using are extremely high. This is a problem for all multi-agent systems in general. If in a few years this cost is reduced or models small and powerful enough to execute this code credibly are released, it will be a highly potent tool, but today’s technological limitations do not allow us to demonstrate all the application’s capabilities. Future work Despite meeting the objectives and requirements specified at the beginning of the development, it is also true that as the work progressed, certain ideas emerged that would have had a positive impact on the project if there had been enough time to implement them all. The decision we made midway through development was to prioritize certain objectives and fulfill those that had been proposed within the framework of this project. Once this prioritization was done, some objectives were left out of the development due to lack of time, despite how interesting they could have been. Below is a list of some of the objectives we would have liked to implement and that are good ideas for future work: Map selection and change: Given the necessary context, we could make the characters independent of the map. However, as the system was initially designed, each character was closely tied to the map, as parts of the map had the names of the characters. Once the characters were separated from the map, it would have been a good idea to create another alternative map or allow users to create their own maps. This was not given high priority since, as we mentioned, users can make the agents map-agnostic and simulate any other space. 116 Capítulo 6. Conclusiones y Trabajo Futuro Character customization: As mentioned in section 3.3.5, the main problem with the characters was that they were directly tied to the map, and their names were crucial for saving simulations and ensuring they worked correctly. However, by adding new maps, this could also be changed, allowing users to choose character names and decide or edit how each one will look. Improving the graphical interface: Although a specific design was created for the application’s functionalities, experimenting with a different color scheme or static resources to style the various pages of the application could have been done, and investigating this is certainly a point to improve in the future. Direct interaction with the environment: In the original application, it was possible to modify certain parts of the environment. For example, one could take an object and change its state (e.g., say a character’s bed was on fire and see how they reacted). However, translating this to the interface was quite complicated, as it would require delving into Phaser’s implementation, recognizing each object with clicks, and then performing the environment modification query with the backend. It is an ambitious goal that would be very interesting to see and would add significant value to the application. Free choice of LLM: After investigating and testing many language models, we concluded that, with the current conditions, the least bad option to run this system is using the OpenAI API. This does not allow for many calls, but it is one of the few that can process the input we send and works well today. It would be interesting in the future for users to input their language models installed on their computers or to use any other API they have at their disposal. More summaries: Besides the summaries automatically generated when saving a simulation, it would be a good idea to save a greater number of summaries to help users locate each simulation. It could be beneficial to have summaries that indicate at which timestamps the most interesting events occur or to generate a summary for each of the application’s characters automatically. Branching simulations at any moment in time: To provide a tool that creates realistic pseudo-social situations for analyzing the diversity of situations phenomena, we saw a unique interest in allowing the branching of already made simulations at any moment in time. This achieves the possibility of exploring alternative scenarios from critical points in time, which, combined with the synthesis provided by summaries, opens the door to creating simulations that generate unforeseen yet interesting situations. Once summarized, these can be detected and branched to observe the system’s behavior when changes are introduced by the user. The implementation of this functionality involves saving the necessary system information at each moment in time so that any system moment can be replicated. 6.3. Trabajo futuro 117 The naive way to do this is to replicate the existing information at each moment in time. This approach is impractical due to the memory size a single simulation would occupy. Estimating a bit, based on a simulation of 3 agents and a total of 24 hours, i.e., 8640 steps, occupying a total of 57 MB. If we assume linear growth in space concerning the number of steps, which it is, this would imply a quadratic cost in space in simulated time. Taking the 24-hour simulation to approximately 1653 MB of space. This is not feasible, especially considering better ways to approach the solution. 124 Capítulo 6. Conclusiones y Trabajo Futuro fue necesario definir las datos esenciales de una simulación y abstraerlos en estructuras que permitieran ejecutar nuevas simulaciones desde la nada. Generación de resúmenes de las simulaciones existentes: En el backend, además de estructurar la información para que se acoplase a la ya existente para una simulación, fue necesario establecer la información prioritaria que se tomaría en cuenta para la generación de un resumen para una simulación. Interacción con los personajes: También envolvió los dos extremos del desarrollo. La mayor complicación que supuso en el backend fue el diseño correcto del método de comunicación entre back y front, haciendo uso de recursos del sistema de forma correcta y recogiendo la información necesaria en el front por medio de ReverieComm.py. Chat con los personajes: Respecto a esta funcionalidad me tuve que encargar del desarrollo visto en la sección 3.3.4. Gestión de la comunicación entre el frontend y el backend de Django Como comentó Alberto el contrato entre los dos extremos se encontraba aquí, donde contribuímos ambos. En especial yo contribuí a exponer la información requerida por el front para que pudiera proceder de la forma necesaria. Así mismo fui el encargado de tratar la información recibida del front y adaptarla al formato requerido por el backend. Bibliografía La literatura es el arte de descubrir algo extraordinario en lo ordinario Boris Pasternak Adhikari, S. et al. Nlp based machine learning approaches for text summarization. En 2020 Fourth International Conference on Computing Methodologies and Communication (ICCMC), páginas 535–538. IEEE, 2020. Arroyo Menéndez, M.,Hassan, S.,Pavón Mestras, J. ySansores, C. Simulación de sistemas sociales con agentes software. Actas del Campus Multidisciplinar en Percepcion e Inteligencia, CMPI, 2006. Axtell, R.,Axelrod, R.,Epstein, J. M. yCohen, M. D. Aligning simulation models: A case study and results. Computational & mathematical organization theory, vol. 1, páginas 123–141, 1996. Bahdanau, D.,Cho, K. yBengio, Y. Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473, 2014. Bankes, S. C. Agent-based modeling: A revolution? Proceedings of the National Academy of Sciences, vol. 99(suppl_3), páginas 7199–7200, 2002. Bengio, Y.,Ducharme, R. yVincent, P. A neural probabilistic language model. Advances in neural information processing systems, vol. 13, 2000. Benvenuti, M.,Cangelosi, A.,Weinberger, A.,Mazzoni, E.,Benassi, M.,Barbaresi, M. yOrsoni, M. Artificial intelligence and human behavioral development: A perspective on new skills and competences acquisition for the educational context. Computers in Human Behavior, vol. 148, página 107903, 2023. Bookstaber, R. The end of theory: Financial crises, the failure of economics, and the sweep of human interaction. Princeton University Press, 2017. 125 126 BIBLIOGRAFÍA Boroomand, A. ySmaldino, P. E. Hard work, risk-taking, and diversity in a model of collective problem solving. Journal of Artificial Societies and Social Simulation, vol. 24(4), 2021. Boroomand, A. ySmaldino, P. E. Superiority bias and communication noise can enhance collective problem solving. Journal of Artificial Societies and Social Simulation, vol. 26(3), 2023. boyd, d. m. yEllison, N. B. Social Network Sites: Definition, History, and Scholarship. Journal of Computer-Mediated Communication, vol. 13(1), páginas 210–230, 2007. ISSN 1083-6101. Brown, P. F.,Cocke, J.,Della Pietra, S. A.,Della Pietra, V. J.,Jelinek, F.,Lafferty, J.,Mercer, R. L. yRoossin, P. S. A statistical approach to machine translation. Computational linguistics, vol. 16(2), páginas 79–85, 1990. Card, S. K.,Moran, T. P. yNewell, A. The psychology of human-computer interaction. En The psychology of human-computer interaction. 1983. Castelfranchi, C. Modelling social action for ai agents. Artificial Intelligence, vol. 103(1), páginas 157–182, 1998. ISSN 0004-3702. Artificial Intelligence 40 years later. Chomsky, N. Syntactic Structures. De Gruyter Mouton, Berlin, Boston, 1957. ISBN 9783112316009. Crowder, R. M.,Robinson, M. A.,Hughes, H. P. ySim, Y.-W. The development of an agent-based modeling framework for simulating engineering team work. IEEE Transactions on Systems, Man, and Cybernetics-Part A: Systems and Humans, vol. 42(6), páginas 1425–1439, 2012. Devlin, J.,Chang, M.-W.,Lee, K. yToutanova, K. Bert: Pre-training of deep bidirectional transformers for language understanding. 2019. Eldan, R. yLi, Y. Tinystories: How small can language models be and still speak coherent english? arXiv preprint arXiv:2305.07759, 2023. Epstein, J. M. yAxtell, R. Growing artificial societies: social science from the bottom up. Brookings Institution Press, 1996. Farmer, J. D. yFoley, D. The economy needs agent-based modelling. Nature, vol. 460(7256), páginas 685–686, 2009. Gambo, I.,Adjicheboutou, A.,Ikono, R.,Iroju, O. yYange, S. An investigative process model for predicting information difusion on social media: Information system perspective. Ife Journal of Technology, vol. 27(1), páginas 47–59, 2020. Gardner, M. The fantastic combinations of jhon conway’s new solitaire game’life. Sc. Am., vol. 223, páginas 20–123, 1970. BIBLIOGRAFÍA 127 Goldberg, E.,Driedger, N. yKittredge, R. I. Using natural-language processing to produce weather forecasts. IEEE Expert, vol. 9(2), páginas 45–53, 1994. Goodfellow, I.,Bengio, Y. yCourville, A. Deep learning. MIT press, 2016. Goodfellow, I.,Pouget-Abadie, J.,Mirza, M.,Xu, B.,Warde-Farley, D.,Ozair, S.,Courville, A. yBengio, Y. Generative adversarial nets. Advances in neural information processing systems, vol. 27, 2014. Hannun, A.,Case, C.,Casper, J.,Catanzaro, B.,Diamos, G.,Elsen, E., Prenger, R.,Satheesh, S.,Sengupta, S.,Coates, A. et al. Deep speech: Scaling up end-to-end speech recognition. arXiv preprint arXiv:1412.5567, 2014. Heckbert, S.,Baynes, T. yReeson, A. Agent-based modeling in ecological economics. Annals of the New York Academy of Sciences, vol. 1185(1), páginas 39–53, 2010. Hernández, M. B. yGómez, J. M. Aplicaciones de procesamiento de lenguaje natural. Revista Politécnica, vol. 32, 2013. Hochreiter, S. Untersuchungen zu dynamischen neuronalen netzen. Diploma, Technische Universität München, vol. 91(1), página 31, 1991. Hochreiter, S. ySchmidhuber, J. Long short-term memory. Neural computation, vol. 9(8), páginas 1735–1780, 1997. Hogeweg, P. yHesper, B. The ontogeny of the interaction structure in bumble bee colonies: a mirror model. Behavioral Ecology and Sociobiology, vol. 12, páginas 271–283, 1983. Hopfield, J. J. Neural networks and physical systems with emergent collective computational abilities. Proceedings of the national academy of sciences, vol. 79(8), páginas 2554–2558, 1982. House, J.,Landis, K. yUmberson, D. Social relationships and health. Science, vol. 241(4865), páginas 540–545, 1988. Hughes, H. P.,Clegg, C. W.,Robinson, M. A. yCrowder, R. M. Agentbased modelling and simulation: The potential contribution to organizational psychology. Journal of Occupational and Organizational Psychology, vol. 85(3), páginas 487–502, 2012. Jelinek, F. Continuous speech recognition by statistical methods. Proceedings of the IEEE, vol. 64(4), páginas 532–556, 1976. Jennings, N. yWooldridge, M. J. Agent technology: foundations, applications, and markets. Springer Science & Business Media, 1998. Karpathy, A. yFei-Fei, L. Deep visual-semantic alignments for generating image descriptions. En Proceedings of the IEEE conference on computer vision and pattern recognition, páginas 3128–3137. 2015. 128 BIBLIOGRAFÍA Kavcic, A. Software accessibility: Recommendations and guidelines. En EUROCON 2005-The International Conference onÇomputer as a Tool", vol. 2, páginas 1024–1027. IEEE, 2005. Kingma, D. P. yWelling, M. Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114, 2013. Kohler, T. A. yGumerman, G. G. Dynamics in human and primate societies: Agent-based modeling of social and spatial processes. Oxford University Press, 2000. LeCun, Y.,Denker, J. ySolla, S. Optimal brain damage. Advances in neural information processing systems, vol. 2, 1989. Ma, S.,Wang, H.,Ma, L.,Wang, L.,Wang, W.,Huang, S.,Dong, L.,Wang, R.,Xue, J. yWei, F. The era of 1-bit llms: All large language models are in 1.58 bits. arXiv preprint arXiv:2402.17764, 2024. MacKenzie, I. S. Human-computer interaction: An empirical research perspective. Morgan Kaufmann, 2012. Markov, A. Attempt of statistical research on the text of the novel. Eugene Onegin” illustrating the connection of the tests in chain (Éxample of a statistical investigation of the text of “Eugene Onegin” illustrating the dependence between samples in chain’)”. In: Izvistia Imperatorskoi Akademii Nauk (Bulletin of the Imperial Academy of Sciences of St. Petersburg). 6th ser, vol. 7, páginas 153–162, 1913. Markov, A. A. Rasprostranenie zakona bol’shih chisel na velichiny, zavisyashchie drug ot druga (extending the law of large numbers for variables that are dependent of each other). Izvestiya Fiziko-matematicheskogo obshchestva pri Kazanskom universitete, vol. 15(2-ya seriya), páginas 124–156, 1906. Marks, R. E. Analysis and synthesis: multi-agent systems in the social sciences. The Knowledge Engineering Review, vol. 27(2), página 123–136, 2012. Mcginnis, J.,Russo, P. yKnickman, J. The case for more active policy attention to health promotion. Health affairs (Project Hope), vol. 21, páginas 78–93, 2002. Minsky, M. The emotion machine: Commonsense thinking, artificial intelligence, and the future of the human mind. Simon and Schuster, 2007. Mishra, M.,Nayak, J.,Naik, B. yAbraham, A. Deep learning in electrical utility industry: A comprehensive review of a decade of research. Engineering Applications of Artificial Intelligence, vol. 96, página 104000, 2020. Mockus, A.,Fielding, R. T. yHerbsleb, J. D. Two case studies of open source software development: Apache and mozilla. ACM Transactions on Software Engineering and Methodology (TOSEM), vol. 11(3), páginas 309–346, 2002. BIBLIOGRAFÍA 129 Nasrinpour, H. R.,Friesen, M. R. et al. An agent-based model of message propagation in the facebook electronic social network. arXiv preprint arXiv:1611.07454, 2016. Neumann, J. The theory of self-reproducing automata. Univ. of Illinois Press google schola, vol. 2, páginas 429–432, 1966. Nielsen, J. Usability engineering. Morgan Kaufmann, 1994. Norman Donald, A. The design of everyday things. MIT Press, 2013. Pan, X.,Han, C. S.,Dauber, K. yLaw, K. H. A multi-agent based framework for the simulation of human and social behaviors during emergency evacuations. Ai & Society, vol. 22, páginas 113–132, 2007. Park, J. S.,O’Brien, J. C.,Cai, C. J.,Morris, M. R.,Liang, P. yBernstein, M. S. Generative agents: Interactive simulacra of human behavior. 2023. Picard, R. W. Computer learning of subjectivity. ACM Computing Surveys (CSUR), vol. 27(4), páginas 621–623, 1995. Pratt, A. yNunes, J. Interactive design: An introduction to the theory and application of user-centered design. Rockport Pub, 2012. Qian, C.,Cong, X.,Liu, W.,Yang, C.,Chen, W.,Su, Y.,Dang, Y.,Li, J., Xu, J.,Li, D.,Liu, Z. ySun, M. Communicative agents for software development. 2023. Radford, A.,Narasimhan, K.,Salimans, T.,Sutskever, I. et al. Improving language understanding by generative pre-training. OpenAI, 2018. Rand, W. yRust, R. T. Agent-based modeling in marketing: Guidelines for rigor. International Journal of research in Marketing, vol. 28(3), páginas 181–193, 2011. Reiter, E. yDale, R. Building applied natural language generation systems. Natural Language Engineering, vol. 3(1), páginas 57–87, 1997. Rouff, C. Autonomy in future space missions. En AAAI Workshop on Autonomy, Delegation, and Control. 2002. Russell, S. J. yNorvig, P. Artificial intelligence: a modern approach. Pearson, 2016. Schelling, T. C. Dynamic models of segregation. Journal of mathematical sociology, vol. 1(2), páginas 143–186, 1971. Sood, M.,Gera, J. yKaur, H. Creation, evaluation, and optimization of a domain-based dictionary. Journal of Intelligent & Fuzzy Systems, vol. 43(5), páginas 6123–6136, 2022. 130 BIBLIOGRAFÍA Sutskever, I.,Vinyals, O. yLe, Q. V. Sequence to sequence learning with neural networks. Advances in neural information processing systems, vol. 27, 2014. Tesfatsion, L. yJudd, K. L. Handbook of computational economics: agent-based computational economics. Elsevier, 2006. Toma, P. P.,Kozlik, L. A. yPerwin, D. G. Systran machine translation system. En SYSTRAN Machine Translation System.. 1970. Touvron, H.,Martin, L.,Stone, K.,Albert, P.,Almahairi, A.,Babaei, Y.,Bashlykov, N.,Batra, S.,Bhargava, P.,Bhosale, S. et al. Llama 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288, 2023. Troitzsch, K. G. Perspectives and challenges of agent-based simulation as a tool for economics and other social sciences. AAMAS (1), páginas 35–42, 2009. TURING, A. M. I.—COMPUTING MACHINERY AND INTELLIGENCE. Mind, vol. LIX(236), páginas 433–460, 1950. ISSN 0026-4423. Umberson, D. yMontez, J. K. Social relationships and health: A flashpoint for health policy. Journal of Health and Social Behavior, vol. 51(1_suppl), páginas S54–S66, 2010. PMID: 20943583. Vaswani, A.,Shazeer, N.,Parmar, N.,Uszkoreit, J.,Jones, L.,Gomez, A. N.,Kaiser, Ł. yPolosukhin, I. Attention is all you need. Advances in neural information processing systems, vol. 30, 2017. Walen, H. R. yLachman, M. E. Social support and strain from partner, family, and friends: Costs and benefits for men and women in adulthood. Journal of Social and Personal Relationships, vol. 17(1), páginas 5–30, 2000. Weiss, G. Multiagent systems: a modern approach to distributed artificial intelligence. MIT press, 1999. Winograd, T. Procedures as a representation for data in a computer program for understanding natural language. MIT, 1971. Wooldridge, M. An introduction to multiagent systems. John wiley & sons, 2009. Ap´ endice A Templates evaluados A continuación mostramos los templates usados durante la evaluación de Modelos de Lenguaje de la sección 3.2.3. Mostramos en primer lugar el contenido de cada uno de los templates empleados. Todos ellos han sido construidos en la aplicación para el envío a la API de GPT-3.5. Tras ello mostraremos las respuestas que ha dado cada uno de los modelos evaluados, además de las respuestas obtenidas por el modelo GPT-3.5, que usaremos como referencia. A.1. Input A.1.1. action_location_object Jane Anderson is in kitchen in Jane Anderson’s house. Jane Anderson is going to Jane Anderson’s house that has the following areas: {kitchen, bedroom, bathroom} Stay in the current area if the activity can be done there. Never go into other people’s rooms unless necessary. For cooking, Jane Anderson should go to the following area in Jane Anderson’s house: Answer: {kitchen} — Tom Watson is in common room in Tom Watson’s apartment. Tom Watson is going to Hobbs Cafe that has the following areas: {cafe} Stay in the current area if the activity can be done there. Never go into other people’s rooms unless necessary. For getting coffee, Tom Watson should go to the following area in Hobbs Cafe: Answer: {cafe} — 131 132 Apéndice A. Templates evaluados Isabella Rodriguez is going to Isabella Rodriguez’s apartment that has the following areas: {main room, bathroom} * Stay in the current area if the activity can be done there. * NEVER go into other people’s rooms unless necessary. Isabella Rodriguez is preparing the upcoming Valentine’s Day party. For ordering food for the party, Isabella Rodriguez should go to the following area in Isabella Rodriguez’s apartment (MUST pick one of {main room, bathroom}): Answer: { A.1. Input 133 A.1.2. action_object Current activity: sleep in bed Objects available: {bed, easel, closet, painting} Pick ONE most relevant object from the objects available: bed — Current activity: painting Objects available: {easel, closet, sink, microwave} Pick ONE most relevant object from the objects available: easel — Current activity: cooking Objects available: {stove, sink, fridge, counter} Pick ONE most relevant object from the objects available: stove — Current activity: watch TV Objects available: {couch, TV, remote, coffee table} Pick ONE most relevant object from the objects available: TV — Current activity: study Objects available: {desk, computer, chair, bookshelf} Pick ONE most relevant object from the objects available: desk — Current activity: talk on the phone Objects available: {phone, charger, bed, nightstand} Pick ONE most relevant object from the objects available: phone — Current activity: ordering food for the party Objects available: {bed, desk, refrigerator, closet, shelf} Pick ONE most relevant object from the objects available: