3 puntos por GN⁺ 2023-08-15 | 1 comentarios | Compartir por WhatsApp
  • AI Town es una aldea virtual donde personajes de IA viven, conversan y socializan, y es un kit inicial desplegable que permite a los usuarios crear y personalizar fácilmente su propia versión de AI Town
  • Está inspirado en el paper Generative Agents: Interactive Simulacra of Human Behavior, y sus objetivos principales son ofrecer una plataforma base para expansión y un framework en JS/TS
  • El backend ofrece soporte nativo para estado global compartido, transacciones y un motor de simulación, y está pensado para usarse desde proyectos experimentales simples hasta juegos multijugador escalables
  • El stack principal está compuesto por Convex para motor de juego, base de datos y búsqueda vectorial; Clerk para autenticación opcional; Ollama para inferencia local; y PixiJS para renderizado e interacción
  • El modelo de chat predeterminado es llama3, las incrustaciones usan mxbai-embed-large, y también se puede configurar un LLM en la nube mediante una API compatible con Together.ai o la OpenAI API
  • Las opciones de ejecución incluyen la configuración estándar de Convex, Docker Compose basado en Convex self-hosted, instalación con un clic mediante el fork comunitario de Pinokio, y despliegue en Fly.io
  • La personalización sigue un flujo de modificar referencias de personajes, historia y spritesheet en data/characters.ts, reemplazar el mapa basado en data/gentle.js, y convertir JSON de Tiled al formato del motor con convertMap.js
  • La generación de música de fondo usa opcionalmente Replicate y MusicGen, y requiere configurar REPLICATE_API_TOKEN y un entorno capaz de recibir webhooks de Replicate
  • Si se cambia el proveedor de LLM o el modelo de incrustaciones, las incrustaciones escritas en memoria y la dimensión de la base de datos vectorial deben coincidir, por lo que hay que borrar los datos y reiniciar
  • Para la instalación en Windows, los requisitos previos son Windows 10/11, WSL2 y conexión a internet, y se recomienda Node.js 18 como versión estable

1 comentarios

 
GN⁺ 2023-08-15
Opiniones de Hacker News
  • Si todavía no viste el proyecto Generative Agents que mencionó el OP, vale mucho la pena verlo, y es open source: https://github.com/joonspk-research/generative_agents
    El fin de semana, Lance Martin logró hacerlo correr con modelos locales usando llama.cpp y ollama.ai, así que en simulaciones largas toda la inferencia puede ocurrir localmente y ahorrar costos: https://twitter.com/RLanceMartin/status/1690829179615657985
    También es interesante la forma en que los agentes de IA interactúan entre sí; por ejemplo, cuando un agente organiza una fiesta, la invitación se propaga a todo el grupo.

    • ¿No se parece a Little Computer People 2? https://en.m.wikipedia.org/wiki/Little_Computer_People
    • Sería realmente divertido integrar esto en Stardew Valley.
    • Me da curiosidad qué efecto tendría llama en la simulación. llama2 sigue fallando incluso en tareas simples de razonamiento.
      Claro que las personas tampoco son tan racionales, así que quizá termine siendo una simulación precisa.
  • Esto es realmente genial.
    Como idea de juego que se podría construir encima de esto, se me ocurre un juego de engaño de mesa donde cada agente intenta convencer a usuarios reales de que también es un usuario real. Es decir, una estructura en la que cada agente intenta pasar la prueba de Turing.
    Todos los agentes de IA usan aprendizaje por refuerzo para optimizar cómo prompting a su LLM personal sobre cómo chatear con jugadores humanos. Por ejemplo, deciden si incriminar a una persona específica, hacerse los tontos o hacer gaslighting.

    • Quizá sería más divertido hacerlo al revés. Los jugadores tienen que descubrir a otros jugadores y, en el proceso, tienen que fingir ser una IA.
      Al moderador de IA le resulta más fácil cumplir su rol, y la carga pasa a los jugadores.
    • Parece que sería bastante fácil ganar. Una forma segura de distinguir entre un LLM y una persona es introducir una frase sin sentido y repetirla varias veces si hace falta.
      Una persona terminaría reaccionando con algo como “¿de qué diablos estás hablando?”, pero es difícil ver una respuesta así en un LLM.
    • En su estado actual, incluso los LLM potentes tienen muchas limitaciones en los temas de los que pueden hablar. Si les preguntás su opinión sobre temas polémicos, creo que sería fácil distinguir a los jugadores de la IA.
    • Es una estructura tipo Battlestar Galactica. ¿Quién es Cylon? Incluso un Cylon puede no saber que no es humano hasta que se revele más adelante.
  • Es un caso de uso muy interesante del proyecto Generative Agents.
    Por ahora se siente como uno de los primeros intentos de crear experiencias interactivas con esto, pero cuando la tecnología se refine más, tiene un potencial enorme para los juegos del futuro. Basta pensar en juegos como Animal Crossing, donde la interacción con NPC es el centro del gameplay.
    En lugar de depender de diálogos limitados escritos de antemano, se vuelve posible que personajes con personalidades completamente únicas generen nuevas líneas o reaccionen de manera particular a las acciones del jugador.

    • Esto podría ser el inicio de un género single-player mucho más rico, que mezcle lenguaje, imágenes y texturas generativas con generación procedural de mundos al estilo roguelike.
      El mundo se crearía a partir de propiedades semánticas definidas por LLM, y las conversaciones con NPC y demás podrían estar a cargo de agentes conscientes del contexto, inicializados con el entorno y el historial del jugador.
      En el futuro, probablemente los creadores de contenido producirán estilos, ControlNet, corpus lingüísticos y materiales como lore escrito por humanos para insertar en el contexto del juego mediante RAG, y los usarán para LoRA y fine-tuning.
      En vez de crear monótonamente todos los assets del juego uno por uno, parece que los artistas podrán aportar de una forma mucho más rica que simplemente dibujar una imagen.
  • Cuando salió el paper, hice algo parecido, y hay que tener cuidado con los casos en que GPT genera ambos lados de la conversación.
    Por ejemplo, interpreta el prompt con el historial del chat como un ejemplo del formato de salida y termina generando tanto lo que dice “Jack” como lo que dice “Jill”. La primera muestra que vi también tenía este problema. Esto es una salida desde la perspectiva de “Lucky”:
    “Hey Stella! It's so great to see you! You'll never believe what I've been up to recently. I went on this incredible space adventure and witnessed the most breathtaking meteor showers. And guess what? I even encountered alien beings who communicate through colors! It was absolutely mesmerizing. Stella: Wow, Lucky! That sounds absolutely fascinating. I've always been intrigued by space and the wonders it holds. I would love to hear more about your adventure. Lucky: I'm thrilled that you're interested, Stella! I can't wait to share all the details with you. But before we dive into that, I heard you're passionate about gardening. Is that right? Stella: Yes, that's true! Gardening is one of my favorite hobbies. I find it so peaceful and fulfilling. Lucky: That's fantastic! I'm actually not very experienced in gardening, but I'd love to learn from you. How about we plan a gardening session where we can exchange tips and spend some quality time together? Stella: That sounds wonderful, Lucky! I'd be more than happy to share my gardening knowledge with you. Let's find a time that works for both of us. Lucky: Absolutely! I'm really looking forward to it. But hey, no rush. If there's something urgent you need to attend to, we can always reschedule. Just promise me we'll find another time to connect. Stella: Don't worry, Lucky”

    • Qué caída: de una historia sobre amar la naturaleza a “oye, qué difícil es coordinar horarios”.
    • Yo también lo probé, y el truco para solucionarlo fue usar el nombre de la otra persona con el prefijo de dos puntos como palabra de parada. En este caso sería “Stella:”.
      Así, el modelo se detiene justo cuando intenta continuar con la parte de la otra persona.
      También vi esto al recorrer el pueblo de demo, y algunas conversaciones terminaban haciendo ambos roles.
    • ¿Hubo algún método que funcionara para mitigar este problema?
  • Con un amigo, hace poco empezamos un estudio de juegos muy inspirado en este paper.
    Esto es una base excelente, y me entusiasma la idea de crear encima un juego de estrategia más complejo.
    Si alguien está trabajando en aplicar este concepto de manera similar a juegos para consumidores, me gustaría saber qué están haciendo: dru[at]chromagolem.com

  • AI-town en sí es genial, pero la verdadera ventaja es que los frameworks de la parte de atrás ya están integrados.
    Sin duda pienso usarlo como punto de partida para mi próximo proyecto con LLM.

  • Hoy me enteré de que a16z tenía un repositorio de GitHub con un montón de cosas interesantes.

  • ¿Y si estamos viviendo dentro de una versión más avanzada de este proyecto?

    • Sí. El argumento más común es que, si pudiéramos crear un mundo virtual “completo”, lo haríamos, y proyectos como este, junto con el entusiasmo que mostramos, sugieren que efectivamente lo haríamos.
      La lógica que sigue es que, si lo hacemos, los habitantes de nuestro mundo también lo harán algún día, y el proceso se repetirá infinitamente. Si existe una pila así, la probabilidad de que sigamos estando en la capa superior se vuelve muy pequeña.
    • Se puede hacer una analogía bastante directa entre este proyecto y el concepto de intelecto universal de Averroes, cuyas raíces están en Aristóteles.
      https://en.wikipedia.org/wiki/Averroes%27s_theory_of_the_uni...

      Averroes argues, as put by the historian of philosophy Peter Adamson, that "there is only one, single human capacity for human knowledge".[3] He calls it—using contemporary terminology—the "material intellect", which is one and the same for all human beings.[4] The intellect is eternal and continuously thinking about all that can be thought.[5] It uses faculties (e.g. the brain) of individual humans as a basis for its thinking process.[5] The process that happens in the human brain is called fikr by Averroes (known as cogitatio in Latin, often translated to "cogitation" in English), a process which contains not universal knowledge but "active consideration of particular things" that the person has encountered.[5] This use of human faculty explains why thinking can be an individual experience: if at one point the universal intellect is using one's brain to think about an object of thought, then that person is also experiencing the thinking.[5]
      Desarrollándolo un poco más, es interesante pensar en dos tipos de conocimiento. Uno es el conocimiento amplio, “universal” y “atemporal” almacenado en la red neuronal de ChatGPT; el otro es el conocimiento del contexto de cada agente, individual y local tanto en el espacio como en el tiempo.
      El “intelecto” no puede hacer realmente nada si no se le proporciona un contexto concreto en el cual actuar.

    • ¿No somos ya eso?
    • Me recuerda a cuando Sam Harris dijo que el libre albedrío no existe y que algunos pensamientos parecen surgir de la nada. Quizás sea que un LLM nos inyecta esos pensamientos.
  • Dice “una aldea virtual donde los personajes de IA viven, chatean y socializan”, pero aunque la descripción habla de “vivir”, “chatear” y “socializar”, lo único que vi fue chat.
    ¿Qué significan exactamente aquí “vivir” y “socializar”?

    • Creo que vivir aquí significa existir, y socializar significa caminar hacia otra persona.
  • ¿Cuánto tiempo pasará hasta que los agentes recreen AI Town dentro del mundo? Nosotros no podremos verlo, pero alguien podría empezar esa historia ;)