Esta é uma demonstração usando um agente de modelos de idiomas para jogar jogos de aventura de texto como o Zork.
A demonstração requer um arquivo de jogo para Zork. Você pode baixar o arquivo de jogo do Internet Archive.
Você também precisará de uma chave da API do OpenAI.
Para executar a demonstração com o Docker, você precisa do Docker.
Para instalar, clone o repo e insira o diretório NPC:
git clone https://github.com/deepfates/npc.git
cd npc Mova o arquivo zork1.z5 para o diretório npc .
Em seguida, crie um arquivo .env no diretório npc e adicione
OPENAI_API_KEY= < your openai api key > > sem as marcas < )
Finalmente, construa a imagem do Docker:
docker build -t npc .Para executar a demonstração, corra:
docker run --network= " host " -t npc Em seguida, abra localhost:8080 no seu navegador.
Para construir a demonstração, você precisa de uma versão do Python 3.8 ou 3.9 e poesia.
Para instalar, clone o repo e insira o diretório NPC:
git clone https://github.com/deepfates/npc.git
cd npcEm seguida, instale as dependências do Python:
poetry install Em seguida, crie um arquivo .env no diretório npc e adicione
OPENAI_API_KEY= < your openai api key > > sem as marcas < )
Finalmente, copie o arquivo zork1.z5 no diretório npc .
Esta demonstração é um jogo de aventura de texto totalmente interativo. Você pode jogar o jogo sozinho ou executar um agente para sugerir comandos ou jogar o jogo para você.
Para jogar o jogo, insira o diretório npc e execute o servidor:
poetry run python server.py Em seguida, abra localhost:8080 no seu navegador.
Enquanto joga o jogo, você pode pressionar o botão ⇥ para ativar o agente. Os pensamentos internos do agente serão exibidos acima da caixa de comando e uma sugestão será exibida na caixa de comando. Você pode pressionar ⇥ novamente para enviar a sugestão e ativar o agente automaticamente.
O agente executa um loop interno em um modelo de prompt. Você pode acessar este modelo de prompt pressionando o botão na interface do usuário do jogo. Você pode editar o modelo de prompt e pressionar o botão ↵ para ativar o agente com seu modelo de prompt personalizado. O modelo de prompt deve conter os mesmos {placeholders} que o modelo de prompt padrão.
Para se desenvolver no back -end, você precisa de uma versão do Python 3.8 ou 3.9 e poesia. Instale o ambiente Python como nas instruções de instalação, mas execute o servidor com a bandeira -debug como assim:
poetry run python server.py --debug Ao executar server.py , suas alterações no back -end serão refletidas no aplicativo no localhost:8080 . O servidor será reiniciado sempre que você salvar edições; portanto, se você estiver executando o front -end, precisará atualizar a página para obter um novo ID da sessão.
Atualmente, o agente executa um loop de reação modificado. Consulte o papel React em https://arxiv.org/pdf/2210.03629.pdf para obter mais detalhes.
O agente está no arquivo npc/agent.py . Ele envolve o loop do React com uma memória de buffer curta e um modelo de prompt personalizado. A funcionalidade original era executar um loop por uma dúzia de iterações ou mais e deixá -la interagir com o PWorld através de uma ferramenta de reprodução. Atualmente, isso está desligado para os propósitos da demonstração, porque as ações de jogo eram invisíveis para o front -end. Agora, o agente toma até 3 ações, incluindo aparência e inventário, recomenda um comando. O ajuste imediato ainda é necessário para que essa funcionalidade funcione bem.
O agente é construído com Langchain. Veja sua excelente documentação para obter mais informações sobre a funcionalidade subjacente.
Para se desenvolver no front -end, você precisa de Node.js e NPM.
Para instalar as dependências do front -end, insira o diretório client e execute:
npm installPara executar o front -end no modo de desenvolvimento, execute:
npm run devPara construir o front -end para produção, execute:
npm run build Depois que o front -end é construído ou no modo de desenvolvimento, o aplicativo pode ser servido executando o servidor como nas instruções de instalação. Suas alterações no front -end serão refletidas no aplicativo em localhost:8080 .
O front -end é construído usando esbelto. As principais chamadas da API e o formulário de entrada estão no arquivo App.svelte . O diretório components contém componentes de exibição.
O SVELTE compila com JavaScript; portanto, uma vez que o front -end for construído, você pode executar o servidor sem as dependências do front -end. O back -end do frasco servirá os arquivos front -end do diretório do client/build .
As funções da API no principal aplicativo esbelto não são muito idiomáticas. Eu acho que eles deveriam incorporar melhor a tarefa reativa. Mas eles fazem o trabalho por enquanto.