Il s'agit d'une démo utilisant un agent de modèle de langue pour jouer à des jeux d'aventure textuel comme Zork.
La démo nécessite un fichier de jeu pour Zork. Vous pouvez télécharger le fichier de jeu depuis les archives Internet.
Vous aurez également besoin d'une clé API d'OpenAI.
Pour exécuter la démo avec Docker, vous avez besoin de Docker.
Pour installer, cloner le dépôt et entrer dans le répertoire NPC:
git clone https://github.com/deepfates/npc.git
cd npc Déplacez le fichier zork1.z5 dans le répertoire npc .
Ensuite, créez un fichier .env dans le répertoire npc et ajoutez
OPENAI_API_KEY= < your openai api key > (sans les < > )
Enfin, construisez l'image Docker:
docker build -t npc .Pour exécuter la démo, courez:
docker run --network= " host " -t npc Ensuite, ouvrez localhost:8080 dans votre navigateur.
Pour construire la démo, vous avez besoin d'une version de Python 3.8 ou 3.9 et de la poésie.
Pour installer, cloner le dépôt et entrer dans le répertoire NPC:
git clone https://github.com/deepfates/npc.git
cd npcInstallez ensuite les dépendances Python:
poetry install Ensuite, créez un fichier .env dans le répertoire npc et ajoutez
OPENAI_API_KEY= < your openai api key > (sans les < > )
Enfin, copiez le fichier zork1.z5 dans le répertoire npc .
Cette démo est un jeu d'aventure texte entièrement interactif. Vous pouvez jouer au jeu vous-même ou exécuter un agent pour suggérer des commandes ou jouer au jeu pour vous.
Pour jouer au jeu, entrez dans le répertoire npc et exécutez le serveur:
poetry run python server.py Ensuite, ouvrez localhost:8080 dans votre navigateur.
En jouant au jeu, vous pouvez appuyer sur le bouton ⇥ pour activer l'agent. Les pensées internes de l'agent seront affichées au-dessus de la zone de commande et une suggestion sera affichée dans la zone de commande. Vous pouvez à nouveau appuyer sur ⇥ pour envoyer la suggestion et activer automatiquement l'agent.
L'agent exécute une boucle interne sur un modèle invite. Vous pouvez accéder à ce modèle d'invite en appuyant sur le bouton dans l'interface utilisateur du jeu. Vous pouvez modifier le modèle d'invite et appuyer sur le bouton ↵ pour activer l'agent avec votre modèle d'invite personnalisé. Le modèle d'invite doit contenir le même {placeholders} que le modèle d'invite par défaut.
Pour vous développer sur le backend, vous avez besoin d'une version de Python 3.8 ou 3.9 et de la poésie. Installez l'environnement Python comme dans les instructions d'installation, mais exécutez le serveur avec l'indicateur --debug comme tel:
poetry run python server.py --debug Lors de l'exécution server.py , vos modifications apportées au backend seront reflétées dans l'application de localhost:8080 . Le serveur redémarrera chaque fois que vous enregistrez les modifications, donc si vous exécutez le frontend, vous devrez actualiser la page pour obtenir un nouvel ID de session.
L'agent exécute actuellement une boucle de réact modifiée. Voir le papier React sur https://arxiv.org/pdf/2210.03629.pdf pour plus de détails.
L'agent est dans le fichier npc/agent.py . Il enveloppe la boucle React avec une courte mémoire tampon et un modèle d'invite personnalisé. La fonctionnalité originale consistait à exécuter une boucle pour une douzaine d'itérations et à le laisser interagir avec le PWorld via un outil de jeu. Ceci est actuellement désactivé aux fins de la démo, car les actions de jeu étaient invisibles pour le frontend. Maintenant, l'agent prend jusqu'à 3 actions, y compris l'apparence et l'inventaire, puis recommande une commande. Un réglage rapide est encore nécessaire pour que cette fonctionnalité fonctionne bien.
L'agent est construit avec Langchain. Voir leur excellente documentation pour en savoir plus sur les fonctionnalités sous-jacentes.
Pour vous développer sur le frontend, vous avez besoin de Node.js et de NPM.
Pour installer les dépendances Frontend, entrez le répertoire client et exécutez:
npm installPour exécuter le frontend en mode développement, exécutez:
npm run devPour construire le frontend pour la production, exécutez:
npm run build Une fois le frontend construit ou en mode développement, l'application peut être servie en exécutant le serveur comme dans les instructions d'installation. Vos modifications apportées au frontend seront reflétées dans l'application de localhost:8080 .
Le frontend est construit à l'aide de svelte. Les appels API principaux et le formulaire d'entrée sont dans le fichier App.svelte . Le répertoire components contient des composants d'affichage.
Svelte se compile en JavaScript, donc une fois le frontend construit, vous pouvez exécuter le serveur sans dépendances frontal. Le backend Flask servira les fichiers frontals du répertoire client/build .
Les fonctions de l'API dans l'application Svelte principale ne sont pas très idiomatiques. Je pense qu'ils devraient mieux incorporer la mission réactive. Mais ils font le travail pour l'instant.