Dies ist eine Demo, die einen Sprachmodellagenten verwendet, um Textabenteuerspiele wie Zork zu spielen.
Die Demo benötigt eine Spieldatei für Zork. Sie können die Spieldatei aus dem Internet -Archiv herunterladen.
Sie benötigen auch einen API -Schlüssel von OpenAI.
Um die Demo mit Docker durchzuführen, brauchen Sie Docker.
Zum Installieren das Repo klonen und das NPC -Verzeichnis eingeben:
git clone https://github.com/deepfates/npc.git
cd npc Verschieben Sie die Datei zork1.z5 in das npc -Verzeichnis.
Erstellen Sie als Nächstes eine .env -Datei im npc -Verzeichnis und fügen Sie hinzu
OPENAI_API_KEY= < your openai api key > (ohne die < und > Markierungen)
Erstellen Sie zum Schluss das Docker -Bild:
docker build -t npc .Um die Demo zu führen, rennen Sie:
docker run --network= " host " -t npc Dann öffnen Sie localhost:8080 in Ihrem Browser.
Um die Demo zu erstellen, benötigen Sie eine Version von Python 3.8 oder 3.9 und Gedichten.
Zum Installieren das Repo klonen und das NPC -Verzeichnis eingeben:
git clone https://github.com/deepfates/npc.git
cd npcInstallieren Sie dann die Python -Abhängigkeiten:
poetry install Erstellen Sie als Nächstes eine .env -Datei im npc -Verzeichnis und fügen Sie hinzu
OPENAI_API_KEY= < your openai api key > (ohne die < und > Markierungen)
Kopieren Sie schließlich die Datei zork1.z5 in das npc -Verzeichnis.
Diese Demo ist ein voll interaktives Text -Abenteuerspiel. Sie können das Spiel selbst spielen oder einen Agenten ausführen, um Befehle vorzuschlagen oder das Spiel für Sie zu spielen.
Geben Sie das Spiel in das npc -Verzeichnis ein und führen Sie den Server aus:
poetry run python server.py Dann öffnen Sie localhost:8080 in Ihrem Browser.
Beim Spielen des Spiels können Sie die ⇥ -Taste drücken, um den Agenten zu aktivieren. Die internen Gedanken des Agenten werden über dem Befehlsfeld angezeigt, und ein Vorschlag wird im Befehlsfeld angezeigt. Sie können erneut ⇥ drücken, um den Vorschlag zu senden und den Agenten automatisch zu aktivieren.
Der Agent führt eine interne Schleife in einer Eingabeaufforderungsvorlage aus. Sie können auf diese Eingabeaufforderungsvorlage zugreifen, indem Sie die Taste in der UI der Spiele drücken. Sie können die Eingabeaufforderungsvorlage bearbeiten und die Taste ↵ drücken, um den Agenten mit Ihrer benutzerdefinierten Eingabeaufforderung zu aktivieren. Die Eingabeaufforderungsvorlage muss die gleiche {placeholders} wie die Standard -Eingabeaufforderung -Vorlage enthalten.
Um sich auf dem Backend zu entwickeln, benötigen Sie eine Version von Python 3.8 oder 3.9 und Gedichten. Installieren Sie die Python -Umgebung wie in den Installationsanweisungen, führen Sie den Server jedoch mit dem -Debug -Flag wie SO aus:
poetry run python server.py --debug Während des Ausführens server.py spiegeln sich Ihre Änderungen am Backend in der App bei localhost:8080 wider. Der Server startet jedes Mal neu, wenn Sie Änderungen speichern. Wenn Sie also das Frontend ausführen, müssen Sie die Seite aktualisieren, um eine neue Sitzungs -ID zu erhalten.
Der Agent führt derzeit eine modifizierte React -Schleife aus. Weitere Informationen finden Sie im Reag -Papier unter https://arxiv.org/pdf/2210.03629.pdf für weitere Informationen.
Der Agent befindet sich in der Datei npc/agent.py . Es wickelt die React -Schleife mit einem kurzen Pufferspeicher und einer benutzerdefinierten Eingabeaufforderungsvorlage. Die ursprüngliche Funktionalität bestand darin, eine Schleife für ein Dutzend Iterationen oder so auszuführen und sie durch ein Spielwerkzeug mit der Porld interagieren zu lassen. Dies wird derzeit für die Zwecke der Demo ausgeschaltet, da die Spielaktionen für den Frontend unsichtbar waren. Jetzt führt der Agent bis zu 3 Aktionen aus, einschließlich Aussehen und Inventar und empfiehlt dann einen Befehl. Es ist noch ein sofortiges Tuning erforderlich, damit diese Funktionalität gut funktioniert.
Der Agent wird mit Langchain gebaut. Weitere Informationen zur zugrunde liegenden Funktionalität finden Sie in der hervorragenden Dokumentation.
Um sich am Frontend zu entwickeln, benötigen Sie Node.js und NPM.
Um die Frontend -Abhängigkeiten zu installieren, geben Sie das client -Verzeichnis ein und führen Sie aus:
npm installUm den Frontend im Entwicklungsmodus auszuführen, rennen Sie:
npm run devUm den Frontend für die Produktion zu bauen, rennen Sie:
npm run build Sobald das Frontend erstellt wurde oder im Entwicklungsmodus, kann die App bedient werden, indem der Server wie in den Installationsanweisungen ausgeführt wird. Ihre Änderungen an der Frontend werden in der App von localhost:8080 reflektiert.
Das Frontend wird mit Sufle gebaut. Die Haupt -API -Aufrufe und das Eingabeformular befinden sich in der Datei App.svelte . Das components enthält Anzeigekomponenten.
Svelte kompiliert JavaScript. Sobald der Frontend erstellt wurde, können Sie den Server ohne Frontend -Abhängigkeiten ausführen. Das Flask -Backend serviert die Frontend -Dateien aus dem client/build -Verzeichnis.
Die API -Funktionen in der Haupt -Svelte -App sind nicht sehr idiomatisch. Ich denke, sie sollten eine reaktive Aufgabe besser aufnehmen. Aber sie machen den Job vorerst.