Esta es una demostración que usa un agente de modelos de idiomas para jugar juegos de aventura de texto como Zork.
La demostración requiere un archivo de juego para Zork. Puedes descargar el archivo de juego desde el archivo de Internet.
También necesitará una llave API de OpenAI.
Para ejecutar la demostración con Docker, necesitas Docker.
Para instalar, clone el repositorio e ingrese el directorio NPC:
git clone https://github.com/deepfates/npc.git
cd npc Mueva el archivo zork1.z5 al directorio npc .
A continuación, cree un archivo .env en el directorio npc y agregue
OPENAI_API_KEY= < your openai api key > > sin las marcas < )
Finalmente, construya la imagen de Docker:
docker build -t npc .Para ejecutar la demostración, ejecute:
docker run --network= " host " -t npc Luego abra localhost:8080 en su navegador.
Para construir la demostración, necesita una versión de Python 3.8 o 3.9 y poesía.
Para instalar, clone el repositorio e ingrese el directorio NPC:
git clone https://github.com/deepfates/npc.git
cd npcLuego instale las dependencias de Python:
poetry install A continuación, cree un archivo .env en el directorio npc y agregue
OPENAI_API_KEY= < your openai api key > > sin las marcas < )
Finalmente, copie el archivo zork1.z5 en el directorio npc .
Esta demostración es un juego de aventura de texto totalmente interactivo. Puedes jugar el juego tú mismo o ejecutar un agente para sugerir comandos o jugar el juego para ti.
Para jugar el juego, ingrese el directorio npc y ejecute el servidor:
poetry run python server.py Luego abra localhost:8080 en su navegador.
Mientras juegas, puedes presionar el botón ⇥ para activar el agente. Los pensamientos internos del agente se mostrarán sobre el cuadro de comando, y se mostrará una sugerencia en el cuadro de comando. Puede presionar ⇥ nuevamente para enviar la sugerencia y activar el agente automáticamente.
El agente ejecuta un bucle interno en una plantilla de inmediato. Puede acceder a esta plantilla de inmediato presionando el botón en la interfaz de usuario del juego. Puede editar la plantilla de solicitud y presionar el botón ↵ para activar el agente con su plantilla de solicitud personalizada. La plantilla de solicitud debe contener la misma {placeholders} que la plantilla de solicitud predeterminada.
Para desarrollarse en el backend, necesita una versión de Python 3.8 o 3.9 y poesía. Instale el entorno de Python como en las instrucciones de instalación, pero ejecute el servidor con el indicador -debug como así:
poetry run python server.py --debug Mientras ejecuta server.py , sus cambios en el backend se reflejarán en la aplicación en localhost:8080 . El servidor se reiniciará cada vez que guarde las ediciones, por lo que si está ejecutando el frontend, necesitará actualizar la página para obtener una nueva ID de sesión.
El agente actualmente ejecuta un bucle React modificado. Vea el documento React en https://arxiv.org/pdf/2210.03629.pdf para obtener más detalles.
El agente está en el archivo npc/agent.py . Envuelve el bucle React con una memoria de búfer corta y una plantilla de solicitud personalizada. La funcionalidad original era ejecutar un bucle para una docena de iteraciones más o menos y dejar que interactúe con el Pworld a través de una herramienta de juego. Actualmente se desactiva para los propósitos de la demostración, porque las acciones de juego fueron invisibles para el interfaz. Ahora el agente toma hasta 3 acciones, incluido el aspecto y el inventario, luego recomienda un comando. Aún se necesita un ajuste rápido para que esta funcionalidad funcione bien.
El agente está construido con Langchain. Vea su excelente documentación para obtener más información sobre la funcionalidad subyacente.
Para desarrollarse en la frontend, necesita Node.js y NPM.
Para instalar las dependencias frontend, ingrese el directorio client y ejecute:
npm installPara ejecutar el frontend en modo de desarrollo, ejecute:
npm run devPara construir el frontend para la producción, ejecute:
npm run build Una vez que se construye el frontend, o mientras está en modo de desarrollo, la aplicación se puede servir ejecutando el servidor como en las instrucciones de instalación. Sus cambios en la interfaz se reflejarán en la aplicación en localhost:8080 .
El frontend se construye con eslte. Las llamadas API principales y el formulario de entrada están en el archivo App.svelte . El directorio components contiene componentes de visualización.
Svelte se compila a JavaScript, por lo que una vez que se construye el frontend, puede ejecutar el servidor sin las dependencias frontend. El backend frascos servirá a los archivos frontend desde el directorio client/build .
Las funciones de API en la aplicación principal de SVelte no son muy idiomáticas. Creo que deberían incorporar mejor la asignación. Pero hacen el trabajo por ahora.