Planificación basada en conocimiento para agentes basados en LLM.
?Papel • Web
Nuestro desarrollo se basa en varios pasos clave: Inicialmente , creamos una base de conocimiento de acción extensa, que amalgama el conocimiento de planificación de acción pertinente a tareas específicas. Esta base de datos actúa como un depósito externo de información, dirigiendo el proceso de generación de acciones del modelo. Posteriormente , al convertir el conocimiento de la acción en texto, permitimos que el modelo comprenda profundamente y utilice este conocimiento para crear trayectorias de acción. Finalmente , a través de una fase de autoaprendizaje informado , utilizamos trayectorias desarrolladas a partir de los procesos iterativos del modelo para mejorar continuamente su comprensión y aplicación del conocimiento de la acción. Este proceso no sólo fortalece las capacidades de planificación de los agentes sino que también mejora su potencial de aplicación en situaciones complejas.
Para comenzar con KnowAgent, siga estos sencillos pasos de instalación:
git clone https://github.com/zjunlp/KnowAgent.git
cd KnowAgent
pip install -r requirements.txt
Hemos colocado los conjuntos de datos HotpotQA y ALFWorld en Path_Generation/alfworld_run/data
y Path_Generation/hotpotqa_run/data
respectivamente. Para una configuración adicional, recomendamos continuar con la configuración original de ALFWorld y FastChat.
El proceso de generación de rutas de planificación es parte integral de KnowAgent. Puede encontrar los scripts para ejecutar Planning Path Generation en el directorio Path_Generation
, específicamente run_alfworld.sh
y run_hotpotqa.sh
. Estos scripts se pueden ejecutar usando comandos bash. Para adaptar los scripts a sus necesidades, puede modificar el parámetro mode
para cambiar entre los modos de entrenamiento ( train
) y prueba ( test
), y cambiar el parámetro llm_name
para usar un LLM diferente:
cd Path_Generation
# For training with HotpotQA
python run_hotpotqa.py --llm_name llama-2-13b --max_context_len 4000 --mode train --output_path ../Self-Learning/trajs/
# For testing with HotpotQA
python run_hotpotqa.py --llm_name llama-2-13b --max_context_len 4000 --mode test --output_path output/
# For training with ALFWorld
python alfworld_run/run_alfworld.py --llm_name llama-2-13b --mode train --output_path ../Self-Learning/trajs/
# For testing with ALFWorld
python alfworld_run/run_alfworld.py --llm_name llama-2-13b --mode test --output_path output/
Aquí publicamos las trayectorias sintetizadas por Llama-{7,13,70}b-chat en Google Drive antes del filtrado.
Luego de obtener los caminos de planificación y trayectorias correspondientes, se inicia el proceso de Autoaprendizaje Conocedor. Las trayectorias generadas primero deben convertirse al formato Alpaca utilizando los scripts ubicados en el directorio de Autoaprendizaje.
Para las iteraciones iniciales, siga los pasos descritos en traj_reformat.sh
:
cd Self-Learning
# For HotpotQA
python train/Hotpotqa_reformat.py --input_path trajs/KnowAgentHotpotQA_llama-2-13b.jsonl --output_path train/datas
# For ALFWorld
python train/ALFWorld_reformat.py --input_path trajs/KnowAgentALFWorld_llama-2-13b.jsonl --output_path train/datas
Para iteraciones posteriores, es esencial realizar el filtrado y la fusión de trayectorias basadas en el conocimiento antes de ejecutar el script de reformateo de trayectorias. Puedes lograr esto usando traj_merge_and_filter.sh
:
python trajs/traj_merge_and_filter.py
--task HotpotQA
--input_path1 trajs/datas/KnowAgentHotpotQA_llama-2-13b_D0.jsonl
--input_path2 trajs/datas/KnowAgentHotpotQA_llama-2-13b_D1.jsonl
--output_path trajs/datas
A continuación, inicie el proceso de autoaprendizaje ejecutando train.sh
y train_iter.sh
, como se especifica en los scripts ubicados en Self-Learning/train.sh
y Self-Learning/train_iter.sh
:
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 deepspeed train/train_lora.py
--model_name_or_path llama-2-13b-chat
--lora_r 8
--lora_alpha 16
--lora_dropout 0.05
--data_path datas/data_knowagent.json
--output_dir models/Hotpotqa/M1
--num_train_epochs 5
--per_device_train_batch_size 2
--per_device_eval_batch_size 1
--gradient_accumulation_steps 1
--evaluation_strategy "no"
--save_strategy "steps"
--save_steps 10000
--save_total_limit 1
--learning_rate 1e-4
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type "cosine"
--logging_steps 1
--fp16 True
--model_max_length 4096
--gradient_checkpointing True
--q_lora False
--deepspeed /data/zyq/FastChat/playground/deepspeed_config_s3.json
--resume_from_checkpoint False
@article { zhu2024knowagent ,
title = { KnowAgent: Knowledge-Augmented Planning for LLM-Based Agents } ,
author = { Zhu, Yuqi and Qiao, Shuofei and Ou, Yixin and Deng, Shumin and Zhang, Ningyu and Lyu, Shiwei and Shen, Yue and Liang, Lei and Gu, Jinjie and Chen, Huajun } ,
journal = { arXiv preprint arXiv:2403.03101 } ,
year = { 2024 }
}
Expresamos nuestro agradecimiento a los creadores y contribuyentes de los siguientes proyectos, que han influido significativamente en el desarrollo de KnowAgent:
¡Nuestro más sincero agradecimiento a todos los contribuyentes por sus invaluables contribuciones al campo!
Ofreceremos mantenimiento a largo plazo para corregir errores y resolver problemas. Entonces, si tiene algún problema, díganoslo.