Le planificateur HTN génère automatiquement des plans détaillés en utilisant le GPT d'OpenAI et l'architecture du réseau de tâches hiérarchiques (HTN). Le système génère des tâches pour atteindre un objectif en utilisant le LLM, puis le décompose de manière itérative en sous-tâches qui peuvent être exécutées.
Pour les meilleurs résultats, utilisez GPT-4, bien que d'autres LLMS OpenSource peuvent suffire avec des modifications à l'API
Composants :
- Décomposition - prend une tâche et la décompose en sous-tâches jusqu'à ce que la profondeur maximale soit atteinte ou que le plan échoue. Le système garde une trace des décompositions des candidats et tente de choisir la meilleure option. Peut sortir tôt si les résultats sont bons.
- Replanning - Lorsque la planification échoue ou qu'une partie d'un plan échoue, le redémarrage se produit
- Exécution de la tâche - Identifie une tâche comme une unité exécutable
- Actuellement, les tâches ne sont pas réellement exécutées dans un terminal
- Suivi de l'État - le LLM suit et met à jour l'état à mesure que l'exécution se produit
- Analyse de texte - Parses et extrait les informations des réponses du langage naturel produites par le LLM
- Traduction de la tâche - tente de traduire une tâche de bas niveau en une commande ou un morceau de code qui peut être exécuté.
- Frontend - Un frontend réact simple pour afficher une hiérarchie représentant le plan
- Invite Evolver - Une application conçue pour générer automatiquement des invites à l'aide d'algorithmes évolutifs
- La sélection est effectuée à l'aide de
roulette wheel selection - La mutation est réalisée par le LLM
- La recombinaison est effectuée par le LLM en utilisant les résultats de la sélection
- La forme physique est déterminée par le LLM et est normalisée à l'aide d'un score Z afin que les résultats puissent être comparés en utilisant des écarts-types
- La topologie de l'environnement est une grille toroïdale 2D qui s'adapte à l'optimisation locale ou globale dynamiquement
- Journaux - Une grande variété de journaux sont générés dans le dossier "Journaux" et les traces de fonction peuvent être trouvées dans "function_trace.log"
- function_trace.log - suit tous les appels de fonction annotés avec "@Trace_Function_Calls"
- Les journaux dans le dossier "Logs" suivent chacun un sous-système particulier à l'aide de la fonction "log_response"
- PARSING_ERRORS - suit tous les problèmes avec l'analyse de la sortie du LLM afin que les mises à jour puissent être faites à l'analyseur pour résoudre le problème
- State_changes - suit les transitions d'état dans le temps généré par le LLM en fonction des informations dont il a
Faire :
- Stockez les plans réussis dans une base de données vectorielle pour une utilisation ultérieure et réduisez les coûts de production
- Continuez à améliorer l'analyse du texte pour faire face à plus de cas de bord
- Plus de post-traitement
- Réévaluer les conditions préalables comme une exigence d'exécution des tâches
Installation :
Backend
- Définissez la variable d'environnement
OPENAI_KEY sur votre clé API OpenAI - Installer des dépendances
- Exécuter
pip install -r requirements.txt
- Exécuter une demande de planification
-
python src/main.py - Entrez l'état initial
- Il s'agit de toutes les informations que vous souhaitez que le système sache avant de commencer à planifier
- Vous pouvez en mettre
None ou rien dans cette entrée
- Décrivez votre objectif
- Entrer dans l'objectif que le système prévoit d'atteindre
- Ex:
eat a ham sandwich
- Capacités par défaut
- Ce sont les outils que le planificateur peut envisager d'utiliser lors de la création du plan
- Ce
Linux terminal, internet access , vous pouvez simplement appuyer sur Entrée pour les utiliser
- Choisissez le planificateur
- Options pour créer des plans à l'aide de différents types d'algorithmes de planification. Des options comme le planificateur HTN et un planificateur de recherche *.
- Cela utilise par défaut l'utilisation du planificateur HTN
- Exécuter l'application invite evolver
-
python src/prompt_evolver.py - Entrez dans l'objectif ou le problème que vous aimeriez des invites conçues.
L'extrémité avant:
- Entrez dans le répertoire frontal
- Commencer le frontend
Crédits :
Références :
- Htn
- Papiers
- https://arxiv.org/pdf/1106.4869.pdf
- https://arxiv.org/pdf/1403.7426.pdf
- https://www.cs.umd.edu/~nau/papers/nau2021gtpyhop.pdf
- Livres
- Planification automatisée, théorie et pratique (2008) par Malik Ghallab, Dana Nau, Paolo Traverso (chapitre 11)
- Implémentations et documentation
- https://www.cs.umd.edu/projects/shop/description.html
- https://github.com/ptrefall/fluid-hierarchical-task-network
- https://github.com/maksmaisak/htn
- https://maksmaisak.github.io/htn/front.html
- https://github.com/dananau/gtpyhop
- Vidéos
- https://www.youtube.com/watch?v=7L3TCOFMR7W
- https://www.youtube.com/watch?v=mypf9_5wvlm
- https://www.youtube.com/watch?v=7rHi4fwljw4
- https://www.youtube.com/watch?v=kxm467tftcy
- https://www.youtube.com/watch?v=XXUSFBVILY