Cómo combinar una novela visual con un LLM y una mascota de escritorio en Rust
La mayoría de interfaces para trabajar con redes neuronales lucen igualmente aburridas. Son clones de ChatGPT con una lista de hilos a la izquierda y un campo de entrada a la derecha, o utilidades de línea de comandos para la terminal. Pero si alguna vez has jugado novelas visuales japonesas (Galgame), sabes lo importante que son el contacto visual, los cambios emocionales de los personajes y el contexto de lo que está sucediendo.
Hace poco me encontré con un proyecto interesante llamado LingChat, cuyo autor intentó combinar mecánicas de diálogo de novelas visuales, un sistema de mascota virtual de escritorio y modelos de lenguaje modernos. Lo mejor para nosotros: por debajo es Rust honesto, no otra aplicación hambrienta de recursos como Electron.
Qué hay dentro del proyecto
El repositorio de LingChat ofrece una reelaboración del formato familiar para comunicarse con IA. En lugar de una ventana de chat seca, se nos presenta un personaje animado que reacciona al diálogo, hace seguimiento de tu agenda y puede participar en escenarios interactivos.
El proyecto aborda varias tareas a la vez:
- Respuestas emocionales con sprites. El modelo no solo genera texto sino que también marca su propio estado emocional. Dependiendo del tono de la respuesta, el personaje cambia poses, expresiones faciales y animaciones.
- Modo Mascota de escritorio. El personaje vive justo encima de las ventanas abiertas de tu sistema, reaccionando a clics y acciones del usuario en segundo plano.
- Programador y rastreador de tareas. El motor de diálogo tiene funcionalidad integrada de calendario y recordatorios, así que el asistente te recordará oportunamente sobre una llamada o fecha límite.
- Módulos de historia ramificada. El autor añadió soporte para ramas de escenarios, convirtiendo un chat regular en un juego interactivo con verificaciones de condiciones y elecciones.
Por qué importa la elección de Rust
Usualmente, tales aplicaciones interactivas se construyen con Electron + React o Unity. Ambos enfoques tienen un inconveniente desagradable: el hambre de recursos. La mascota de escritorio necesita ejecutarse en segundo plano durante toda la jornada laboral sin comerse la mitad de tu RAM y hacer girar los ventiladores de tu laptop.
LingChat está escrito en Rust. Esto proporciona bajo consumo de recursos durante la renderización constante de sprites y el procesamiento de eventos del ratón. La lógica central de la aplicación se ejecuta rápido, dejando la mayor parte de los recursos del sistema para inferencia de modelos locales o tareas de trabajo en paralelo.
El código implementa un sistema de análisis para procesar etiquetas emocionales de las respuestas del LLM. Cuando el modelo devuelve una respuesta, el motor intercepta marcadores especiales de estado de ánimo antes de mostrar el texto en pantalla y cambia sincrónicamente los fotogramas de animación del personaje.
Dónde se puede aplicar esto
Además de usarlo directamente por diversión y nostalgia de viejas mascotas virtuales como Shimeji, el proyecto tiene ideas arquitectónicas interesantes para desarrolladores.
Primero, es una gran referencia para crear PNJ en juegos indie. Si quieres añadir personajes basados en IA generativa a tu proyecto, puedes buscar aquí inspiración sobre cómo vincular la salida de texto de un modelo con cambios de estado del grafo de animación.
Segundo, el proyecto demuestra muy bien la mecánica de crear asistentes personalizados con personalidad. En lugar de un bot sin rostro, obtienes un compañero cuyos parámetros de comportamiento y carácter se configuran a través de prompts del sistema y archivos de configuración.
Por dónde empezar
El código fuente es abierto bajo la licencia AGPL-3.0. La documentación y guías de configuración están recopiladas en el sitio web oficial del proyecto https://lingchat.wiki/.
Para ejecutarlo, necesitarás una cadena de herramientas Rust configurada y una clave API para un proveedor de LLM compatible (o un servidor ejecutándose localmente como Ollama / vLLM con soporte de API compatible con OpenAI).
Si has querido construir tu propio compañero de escritorio personalizado o experimentar con el cambio dinámico de sprites a través de LLM, explorar el repositorio SlimeBoyOwO/LingChat definitivamente vale la pena.
Proyectos relacionados