Ce dépôt contient la mise en œuvre d'un agent de planification séquentiel appelé «Neoplanner». Ce planificateur convient aux environnements de texte avec un grand espace d'état et un espace d'action. Il synergie à la fois la recherche d'espace d'état avec des requêtes vers la base de la LLM pour obtenir le meilleur plan d'action. Les signaux de récompense sont utilisés quantitativement pour conduire la recherche. Un équilibre d'exploration et d'exploitation est maintenu en maximisant les limites de confiance supérieure des valeurs des états. Dans des endroits où une exploration aléatoire est nécessaire, le LLM est interrogé pour générer un plan d'action. Les apprentissages de chaque essai sont stockés comme des relations d'entité au format texte. Ceux-ci sont utilisés dans les futures requêtes au LLM pour une amélioration continue. Des expériences dans l'environnement ScienceWorld révèlent une amélioration de 124% par rapport à la meilleure méthode actuelle en termes de récompense moyenne acquise sur plusieurs tâches. Voici l'architechture.

Tout d'abord, clonez le repo et naviguez dans le répertoire Neoplanner et installez les exigences
git clone https://github.com/swarna-kpaul/neoplanner
cd neoplanner
python3 -m pip install -r requirements.txtEnsuite, vous devez modifier le fichier config / keys.py pour mettre à jour l' Openaiapikey . Vous pouvez obtenir votre clé API en vous inscrivant dans le portail Openai. Les premiers utilisateurs peuvent obtenir un crédit gratuit de 5 $ pour expérimenter. Vous pouvez obtenir votre clé API à partir de cette URL
Par la suite, le package peut être importé
from solver import neoplannerInitialiser l'objet solveur
# 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 )Exécutez le solveur.
env = solverobj . train ()
######## get actionplan from statespace graph
additionalinstructions , actionplan , _ , _ , _ = env . getinstructions ()La formation continuera de fonctionner jusqu'à ce que le but soit atteint. Vous pouvez interrompre le processus de formation entre les deux. Dans ce cas, assurez-vous de fournir le STMStorageFile et la croyance de la croyance, afin que les états et les croyances intermédiaires soient sauvés.
Vous pouvez charger le stmStorageFile et interroger l'objet Env pour obtenir le plan d'action du graphique d'espace d'état.
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 ()Le dossier PretrainedFiles contient tous les espaces états formés et les fichiers d'apprentissage pour 7 tâches. Vous pouvez examiner le plan d'action résolu des tâches en utilisant le code ci-dessus, en définissant le stmstoragefile avec le nom de fichier approprié
Les apprentissages peuvent être vus en exécutant le code suivant
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}
}