Der HTN -Planer generiert automatisch detaillierte Pläne mit OpenAIs GPT und der Hierarchical Task Network (HTN) -Scharchitektur. Das System generiert Aufgaben, um ein Ziel mit dem LLM zu erreichen, und zerlegt es dann iterativ in Unteraufgaben, die ausgeführt werden können.
Für die besten Ergebnisse verwenden Sie GPT-4, obwohl andere OpenSource-LLMs mit Änderungen an der API ausreichen können
Komponenten :
- Zersetzung - Nimmt eine Aufgabe an und zersetzt sie in Unteraufgaben, bis die maximale Tiefe erreicht ist oder der Plan fehlgeschlagen ist. Das System verfolgt Kandidatenabzüge und Versuche, die beste Option zu wählen. Kann frühzeitig verlassen, wenn die Ergebnisse gut sind.
- Neuplanung-Wenn die Planung fehlschlägt oder ein Teil eines Plans fehlschlägt, tritt eine Wiederholung auf
- Aufgabenausführung - Identifiziert eine Aufgabe als ausführbare Einheit
- Derzeit werden Aufgaben nicht tatsächlich in einem Terminal ausgeführt
- Statusverfolgung - Die LLM verfolgt und aktualisiert den Status als Ausführung
- Text Parsing - Parsen und extrahiert Informationen aus den von der LLM erzeugten natürlichen Sprachantworten
- Aufgabenübersetzung - Versucht, eine Aufgabe mit niedriger Ebene in einen Befehl oder ein Stück Code zu übersetzen, der ausgeführt werden kann.
- Frontend - Eine einfache Reaktierungsfront, um eine Hierarchie anzuzeigen, die den Plan darstellt
- Eingabeaufforderung Evolver - Eine Anwendung, mit der automatisch Eingabeaufforderungen über evolutionäre Algorithmen generiert werden
- Die Auswahl wird mit
roulette wheel selection durchgeführt - Die Mutation wird vom LLM durchgeführt
- Die Rekombination wird von der LLM unter Verwendung der Auswahlergebnisse durchgeführt
- Die Fitness wird durch das LLM bestimmt und unter Verwendung eines Z-Score normalisiert, sodass die Ergebnisse unter Verwendung von Standardabweichungen verglichen werden können
- Umwelttopologie ist ein 2D -Toroid -Netz, das sich dynamisch an lokale oder globale Optimierung anpasst
- Protokolle - Eine große Auswahl an Protokollen wird im Ordner "Protokolle" generiert, und die Funktionsspuren finden Sie in "function_trace.log".
- function_trace.log - verfolgt alle Funktionsaufrufe mit "@trace_function_calls" annotiert.
- Die Protokolle im Ordner "Protokolle" verfolgen jeweils ein bestimmtes Subsystem mit der Funktion "log_response"
- Parsing_errors - verfolgt alle Probleme beim Parsen der Ausgabe aus dem LLM, damit Aktualisierungen an den Parser durchgeführt werden können, um das Problem zu beheben
- STATE_CHANGES - verfolgt die vom LLM erzeugten Zustandsübergänge im Laufe der Zeit anhand der Informationen, die sie hat
Todo :
- Speichern Sie die Teile erfolgreicher Pläne in einem Vektor -DB für die spätere Verwendung und senken Sie die Erzeugungskosten
- Verbessern Sie weiterhin die Analyse des Textes, um mit mehr Kantenfällen umzugehen
- Mehr Nachbearbeitung
- Bewerten Sie die Voraussetzungen erneut als Voraussetzung für die Ausführung von Aufgaben
Installation :
Backend
- Legen Sie die Umgebungsvariable
OPENAI_KEY auf Ihre OpenAI -API -Schlüssel ein - Abhängigkeiten installieren
-
pip install -r requirements.txt ausführen
- Planungsanwendung ausführen
-
python src/main.py - Geben Sie den Anfangszustand ein
- Dies sind alle Informationen, die das System kennen soll, bevor es mit der Planung beginnt
- Sie können
None oder nichts in diese Eingabe einfügen
- Beschreibe dein Ziel
- Geben Sie das Ziel ein, dass das System zu erreichen plant
- Beispiel:
eat a ham sandwich
- Standardfunktionen
- Dies sind die Tools, die der Planer beim Erstellen des Plans in Betracht ziehen kann
- Diese Standardeinstellung für
Linux terminal, internet access können Sie einfach die Eingabetaste drücken, um diese zu verwenden
- Wählen Sie Planer
- Optionen zum Erstellen von Plänen mit verschiedenen Arten von Planungsalgorithmen. Optionen wie der HTN -Planer und ein* Suchplaner.
- Dies ist standardmäßig mit dem HTN -Planer verwendet
- Führen Sie eine schnelle Evolver -Anwendung aus
-
python src/prompt_evolver.py - Geben Sie das Ziel oder das Problem ein, das Sie möchten, dass die Eingabeaufforderungen entworfen werden.
Frontend:
- In das Frontend -Verzeichnis gehen
- Starten Sie den Frontend
Credits :
Referenzen :
- Htn
- Papiere
- https://arxiv.org/pdf/1106.4869.pdf
- https://arxiv.org/pdf/1403.7426.pdf
- https://www.cs.umd.edu/~au/papers/nau2021gtpyhop.pdf
- Bücher
- Automatische Planung, Theorie und Praxis (2008) von Malik Ghallab, Dana Nau, Paolo Traverso (Kapitel 11)
- Implementierungen und Dokumentation
- https://www.cs.umd.edu/projects/shop/description.html
- https://github.com/ptrefall/fluid-hierarchical-task-network
- https://github.com/maksmaisak/htn
- https://maksmaiak.github.io/htn/front.html
- https://github.com/dananau/gtpyhop
- Videos
- 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=xxusfbvquly