Comment combiner un visual novel avec un LLM et un animal de compagnie de bureau en Rust
La plupart des interfaces pour travailler avec les réseaux de neurones se ressemblent et sont tout aussi ternes. Ce sont soit des clones de ChatGPT avec une liste de fils de discussion à gauche et un champ de saisie à droite, soit des utilitaires en ligne de commande pour le terminal. Mais si vous avez déjà joué à des visual novels japonais (Galgame), vous savez à quel point le contact visuel, les changements d'émotions du personnage et le contexte de ce qui se passe sont importants.
Récemment, je suis tombé sur un projet intéressant appelé LingChat, dont l'auteur a essayé de combiner les mécaniques de dialogue des visual novels, un système d'animal de compagnie de bureau virtuel et des modèles de langage modernes. Le meilleur pour nous : sous le capot, c'est de l'honnête Rust, pas une autre application Electron vorace en ressources.
Ce qu'il y a à l'intérieur du projet
Le dépôt LingChat propose une refonte du format familier de communication avec l'IA. Au lieu d'une fenêtre de chat austère, on nous présente un personnage animé qui réagit au dialogue, garde une trace de votre calendrier et peut participer à des scénarios interactifs.
Le projet aborde plusieurs tâches à la fois :
- Réponses émotionnelles de sprites. Le modèle ne se contente pas de générer du texte mais marque aussi son propre état émotionnel. Selon le ton de la réponse, le personnage change de poses, d'expressions faciales et d'animations.
- Mode animal de compagnie de bureau. Le personnage vit juste au-dessus des fenêtres ouvertes de votre système, réagissant aux clics et aux actions de l'utilisateur en arrière-plan.
- Planificateur et suivi des tâches. Le moteur de dialogue dispose d'une fonctionnalité intégrée de calendrier et de rappels, de sorte que l'assistant vous rappellera rapidement un appel ou une échéance.
- Modules d'histoire à embranchements. L'auteur a ajouté la prise en charge des embranchements de scénarios, transformant un chat ordinaire en un jeu interactif avec des vérifications de conditions et des choix.
Pourquoi le choix de Rust est important
Habituellement, ces applications interactives sont construites avec Electron + React ou Unity. Les deux approches ont un inconvenient désagréable : la faim de ressources. L'animal de compagnie de bureau doit fonctionner en arrière-plan toute la journée de travail sans manger la moitié de votre RAM et faire tourner les ventilateurs de votre ordinateur portable.
LingChat est écrit en Rust. Cela permet une faible consommation de ressources lors du rendu constant des sprites et du traitement des événements de souris. La logique principale de l'application s'exécute rapidement, laissant la plupart des ressources système pour l'inférence de modèle locale ou les tâches de travail parallèles.
Le code implémente un système d'analyse pour traiter les balises émotionnelles des réponses LLM. Lorsque le modèle renvoie une réponse, le moteur intercepte les marqueurs d'humeur spéciaux avant d'afficher le texte à l'écran et change de manière synchrone les images d'animation du personnage.
Où cela peut-il être appliqué
En dehors de l'utiliser directement pour le plaisir et la nostalgie des vieux animaux de compagnie virtuels comme Shimeji, le projet propose des idées architecturales intéressantes pour les développeurs.
Premièrement, c'est une excellente référence pour créer des PNJ dans les jeux indépendants. Si vous souhaitez ajouter des personnages basés sur l'IA générative à votre projet, vous pouvez chercher de l'inspiration ici sur la façon de lier la sortie textuelle d'un modèle avec les changements d'état du graphe d'animation.
Deuxièmement, le projet montre bien les mécaniques de création d'assistants personnalisés avec de la personnalité. Au lieu d'un bot sans visage, vous obtenez un compagnon dont les paramètres de comportement et le caractère sont configurés via des invites système et des fichiers de configuration.
Par où commencer
Le code source est ouvert sous la licence AGPL-3.0. La documentation et les guides de configuration sont rassemblés sur le site officiel du projet https://lingchat.wiki/.
Pour l'exécuter, vous aurez besoin d'une chaîne d'outils Rust configurée et d'une clé API pour un fournisseur LLM compatible (ou d'un serveur fonctionnant localement comme Ollama / vLLM avec support de l'API compatible OpenAI).
Si vous avez toujours voulu construire votre propre compagnon de bureau personnalisé ou expérimenter avec le changement dynamique de sprites via LLM, explorer le dépôt SlimeBoyOwO/LingChat en vaut définitivement la peine.
Projets similaires