Dieses Repo enthält die Implementierung eines sequentiellen Planungsagenten namens „Neoplanner“. Dieser Planer ist für textbasierte Umgebungen mit großem Zustand und Aktionsraum geeignet. Es synergiert beide staatliche Raumsuche mit Abfragen zu grundlegenden LLM, um den besten Aktionsplan zu erhalten. Die Belohnungssignale werden quantitativ verwendet, um die Suche voranzutreiben. Ein Gleichgewicht zwischen Erkundung und Ausbeutung wird aufrechterhalten, indem die oberen Vertrauensgrenzen von Zuständen maximiert werden. An Orten, an denen eine zufällige Erkundung benötigt wird, wird das LLM zur Erstellung eines Aktionsplans abfragt. Die Erkenntnisse aus jedem Versuch werden als Entitätsbeziehungen im Textformat gespeichert. Diese werden in zukünftigen Abfragen zum LLM zur kontinuierlichen Verbesserung verwendet. Experimente in der Scienceworld -Umgebung zeigen eine Verbesserung von 124% gegenüber der aktuellen besten Methode hinsichtlich der durchschnittlichen Belohnung, die über mehrere Aufgaben gewonnen wurde. Im Folgenden finden Sie die Architechne.

Klonen Sie zunächst das Repo und navigieren Sie in das Neoplanner -Verzeichnis und installieren Sie die Anforderungen
git clone https://github.com/swarna-kpaul/neoplanner
cd neoplanner
python3 -m pip install -r requirements.txtAnschließend müssen Sie die Datei config/keys.py ändern, um die openAiapikey zu aktualisieren. Sie können Ihren API -Schlüssel erhalten, indem Sie sich im OpenAI -Portal registrieren. Erstmals können Benutzer ein kostenloses 5 -Dollar -Guthaben erhalten, mit dem sie experimentieren können. Sie können Ihren API -Schlüssel von dieser URL erhalten
Danach kann das Paket importiert werden
from solver import neoplannerInitialisieren Sie das Solver -Objekt
# task is the identifier of tasks as specified in
# stmloadfile is the name of the file (with full path) that contains saved state. The state will be loaded initially. default value is None
# stmstoragefile is the name of the file (with full path) whare intermediate states can be saved. default value is None
# beliefstorefile is the name of the file (with full path) whare intermediate learnings can be saved. default value is None
# beliefloadfile is the name of the file (with full path) that contains intermediate learnings. The learnings will be loaded initially. default value is None
# sigma is exploration probability constant. Increasing its value would increase random exploration by the the LLM.
solverobj = neoplanner ( task = "2-1" , stmloadfile = None , stmstoragefile = None , beliefstorefile = None , beliefloadfile = None , sigma = 0.3 )Führen Sie den Löser aus.
env = solverobj . train ()
######## get actionplan from statespace graph
additionalinstructions , actionplan , _ , _ , _ = env . getinstructions ()Das Training läuft weiter, bis das Ziel erreicht ist. Sie können den Trainingsprozess dazwischen unterbrechen. In diesem Fall stellen Sie sicher, dass Sie die STMSTORAGEFILE und das TraußstorFile bereitstellen, damit Zwischenzustände und Überzeugungen gerettet werden.
Sie können das STMSTORage -Datei laden und das Env -Objekt abfragen, um den Aktionsplan aus dem Zustandsbereich des Zustandsraums zu erhalten.
import pickle
from solver import scienv
env = scienv ( "2-1" )
stmstoragefile = < file name with full path >
with open ( stmstoragefile , 'rb' ) as f :
rootnodeid , invalidnodeid , DEFAULTVALUE , statespace , totaltrials , actiontrace , environment = pickle . load ( f )
env . model . rootnodeid = rootnodeid
env . model . invalidnodeid = invalidnodeid
env . model . DEFAULTVALUE = DEFAULTVALUE
env . model . statespace = statespace
env . model . totaltrials = totaltrials
env . environment = environment
env . reset ()
additionalinstructions , actionplan , _ , _ , _ = env . getinstructions ()Der Ordner "PretRainained Files" enthält alle geschulten Status- und Lerndateien für 7 Aufgaben. Sie können den gelösten Aktionsplan der Aufgaben mit dem obigen Code untersuchen, indem Sie die STMstorage -Datei mit entsprechendem Dateinamen festlegen
Die Erkenntnisse können durch Ausführen des folgenden Codes gesehen werden
import pickle
beliefloadfile = < belief load file name >
with open ( beliefloadfile , 'rb' ) as f :
beliefaxioms , totalexplore = pickle . load ( f )
print ( beliefaxioms ) @misc{paul2023sequential,
title={Sequential Planning in Large Partially Observable Environments guided by LLMs},
author={Swarna Kamal Paul},
year={2023},
eprint={2312.07368},
archivePrefix={arXiv},
primaryClass={cs.AI}
}