À propos du projet

Jericho sert d'environnement d'apprentissage spécialisé conçu pour faciliter la recherche en intelligence artificielle et en apprentissage par renforcement en reliant les agents autonomes aux jeux de fiction interactive (IF) créés par l'homme. Construit comme une interface légère basée sur Python, il utilise l'émulateur Frotz pour fournir un moyen standardisé permettant aux agents d'interagir avec les jeux d'aventure textuels. **Capacités et environnement principaux** La fonction principale de Jericho est d'exposer les jeux IF comme des environnements de type Gym, permettant aux chercheurs de former des agents pour naviguer dans des structures narratives complexes à l'aide de commandes en langage naturel. Les composants clés comprennent : * **Environnement Frotz :** L'interface principale qui gère l'état du jeu, les actions et les observations. * **Arbre d'objets :** Fournit des informations structurelles sur le monde du jeu, aidant les agents à comprendre les relations spatiales et les interactions d'objets. * **Dictionnaire de jeu :** Aide à parser et à comprendre le vocabulaire spécifique à chaque jeu. * **Générateur de modèle d'action :** Un utilitaire pour créer des modèles d'action valides pour guider l'exploration de l'agent. **Mises à jour de la version 4.0 et déterminisme** Un changement significatif dans Jericho 4.0 concerne la gestion des graines aléatoires pour améliorer la rigueur scientifique. Avant cette version, l'omission d'un argument de graine utilisait silencieusement la graine de solution du jeu, rendant les épisodes déterministes. Ce comportement a été identifié comme un handicap pour les agents d'apprentissage, car il supprimait la stochasticité nécessaire. Dans la version 4.0 : * Les environnements sont **stochastiques par défaut** : si aucune graine n'est spécifiée, une nouvelle graine aléatoire est tirée pour chaque épisode. * **Reproductibilité :** La graine utilisée dans un épisode est signalée dans le dictionnaire d'informations `reset()` et accessible via `FrotzEnv.episode_seed`, permettant aux chercheurs de reproduire des épisodes spécifiques après coup. * **Contrôle de la solution :** Les utilisateurs peuvent demander explicitement la graine de solution en utilisant `use_walkthrough_seed=True` dans `reset()` ou en accédant à `env.walkthrough_seed`. Un avertissement `ImplicitRandomSeedWarning` est émis si un agent commence un épisode sans choix de graine explicite pour les jeux avec des solutions connues, encourageant les meilleures pratiques dans la conception expérimentale. **Exigences et installation** Jericho nécessite Linux, Python 3.12+, SpaCy et des outils de construction de base (gcc, make, curl). Il est installable via pip, avec des dépendances gérées via Conda ou des environnements Python standard. Le projet comprend une documentation extensive couvrant les démarrages rapides, les références d'API et les fonctions utilitaires. **Intégration de la recherche** Le référentiel met en évidence plusieurs agents d'IA qui ont utilisé Jericho pour l'entraînement, notamment Reading Comprehension Deep Q-Network (RCDQN), Contextual Action Language Model (CALM), Q*BERT et Knowledge Graph Advantage Actor Critic (KG-A2C). Cela démontre son utilité pour tester les algorithmes de compréhension du langage naturel, de planification et d'apprentissage par renforcement dans des domaines textuels complexes.