El Planificador HTN genera automáticamente planes detallados que utilizan la arquitectura GPT de OpenAI y la red de tareas jerárquicas (HTN). El sistema genera tareas para lograr un objetivo utilizando el LLM y luego lo descompone iterativamente en subtareas que se pueden ejecutar.
Para obtener los mejores resultados, use GPT-4, aunque otros LLM de OpenSource pueden ser suficientes con modificaciones a la API
Componentes :
- Descomposición: toma una tarea y la descompone en subtareas hasta que se alcanza la profundidad máxima o el plan ha fallado. El sistema realiza un seguimiento de las descomposiciones candidatas e intenta elegir la mejor opción. Puede salir temprano si los resultados son buenos.
- Replanación de la planificación: cuando la planificación falla o parte de un plan falla, se produce la re-planificación
- Ejecución de tareas: identifica una tarea como una unidad ejecutable
- En la actualidad, las tareas no se ejecutan en una terminal
- Seguimiento de estado: el LLM rastrea y actualiza el estado a medida que ocurre la ejecución
- Análisis de texto: analiza y extrae información de las respuestas del lenguaje natural producidas por el LLM
- Traducción de tareas: intenta traducir una tarea de bajo nivel a un comando o pieza de código que se pueda ejecutar.
- Frontend: un simple frontend react para mostrar una jerarquía que representa el plan
- Avoluciones de evolución: una aplicación diseñada para generar automáticamente indicaciones utilizando algoritmos evolutivos
- La selección se realiza con
roulette wheel selection - La mutación es realizada por el LLM
- LLM realiza la recombinación utilizando los resultados de la selección
- LLM determina la aptitud física y se normaliza utilizando una puntuación Z para que los resultados se puedan comparar utilizando desviaciones estándar
- La topología del entorno es una red toroidal 2D que se ajusta dinámicamente a la optimización local o global
- Registros: se genera una gran variedad de registros en la carpeta "registros" y las trazas de funciones se pueden encontrar en "function_trace.log"
- function_trace.log: rastrea todas las llamadas de función anotadas con "@trace_function_calls"
- Los registros en la carpeta "Logs" cada rastrear un subsistema particular utilizando la función "Log_Response"
- Parsing_errors: rastrea cualquier problema con la analización de la salida del LLM para que se puedan realizar actualizaciones al analizador para solucionar el problema
- state_changes: rastrea las transiciones de estado a lo largo del tiempo generadas por la LLM en función de la información que tiene
Hacer :
- Almacene las piezas de planes exitosos en un DB vectorial para su uso posterior y reduzca los costos de generación
- Continúe mejorando el análisis de texto para lidiar con más casos de borde
- Más postprocesamiento
- Reevaluar las condiciones previas como requisito para la ejecución de la tarea
Instalación :
Backend
- Establezca la variable de entorno
OPENAI_KEY en su tecla API OpenAI - Instalar dependencias
- Ejecute
pip install -r requirements.txt
- Ejecutar la aplicación de planificación
-
python src/main.py - Ingrese el estado inicial
- Esta es cualquier información que desea que el sistema sepa antes de que comience a planificar
- Puede poner
None o nada en esta entrada
- Describe tu objetivo
- Ingrese el objetivo que el sistema planea alcanzar
- Ej:
eat a ham sandwich
- Capacidades predeterminadas
- Estas son las herramientas que el planificador puede considerar usar al crear el plan.
- Este valor predeterminado a
Linux terminal, internet access , puede presionar ENTER para usarlos
- Elige planificador
- Opciones para crear planes utilizando diferentes tipos de algoritmos de planificación. Opciones como el planificador HTN y un* planificador de búsqueda.
- Este valor predeterminado es usar el planificador HTN
- Ejecutar la aplicación de evolución rápida
-
python src/prompt_evolver.py - Ingrese el objetivo o el problema con el que le gustaría las indicaciones diseñadas.
Interfaz:
- Entrar en el directorio frontend
- Comience el frontend
Créditos :
Referencias :
- HTN
- Papeles
- https://arxiv.org/pdf/1106.4869.pdf
- https://arxiv.org/pdf/1403.7426.pdf
- https://www.cs.umd.edu/~nau/papers/nau2021gtpyhop.pdf
- Libros
- Planificación automatizada, teoría y práctica (2008) por Malik Ghallab, Dana Nau, Paolo Traverso (Capítulo 11)
- Implementaciones y documentación
- https://www.cs.umd.edu/projects/shop/description.html
- https://github.com/ptrefall/fluid-hierchical-task-network
- https://github.com/maksmaisak/htn
- https://maksmaisak.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