Planification augmentée par les connaissances pour les agents basés sur LLM.
?Papier • Web
Notre développement repose sur plusieurs étapes clés : Dans un premier temps , nous créons une vaste base de connaissances sur les actions , qui regroupe les connaissances en matière de planification d'actions pertinentes pour des tâches spécifiques. Cette base de données agit comme un réservoir externe d'informations, pilotant le processus de génération d'actions du modèle. Par la suite , en convertissant les connaissances d'action en texte, nous permettons au modèle de comprendre en profondeur et d'utiliser ces connaissances dans la création de trajectoires d'action. Enfin , à travers une phase d'auto-apprentissage bien informé , nous utilisons les trajectoires développées à partir des processus itératifs du modèle pour améliorer continuellement sa compréhension et son application des connaissances d'action. Ce processus renforce non seulement les capacités de planification des agents, mais améliore également leur potentiel d'application dans des situations complexes.
Pour démarrer avec KnowAgent, suivez ces étapes d'installation simples :
git clone https://github.com/zjunlp/KnowAgent.git
cd KnowAgent
pip install -r requirements.txt
Nous avons placé les ensembles de données HotpotQA et ALFWorld sous Path_Generation/alfworld_run/data
et Path_Generation/hotpotqa_run/data
respectivement. Pour une configuration plus approfondie, nous vous recommandons de procéder à la configuration originale d'ALFWorld et de FastChat.
Le processus de génération de chemin de planification fait partie intégrante de KnowAgent. Vous pouvez trouver les scripts pour exécuter Planning Path Generation dans le répertoire Path_Generation
, en particulier run_alfworld.sh
et run_hotpotqa.sh
. Ces scripts peuvent être exécutés à l'aide de commandes bash. Pour adapter les scripts à vos besoins, vous pouvez modifier le paramètre mode
pour basculer entre les modes formation ( train
) et test ( test
), et modifier le paramètre llm_name
pour utiliser un LLM différent :
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/
Nous publions ici les trajectoires synthétisées par Llama-{7,13,70}b-chat dans Google Drive avant filtrage.
Après avoir obtenu les chemins de planification et les trajectoires correspondantes, le processus d'auto-apprentissage compétent commence. Les trajectoires générées doivent au préalable être converties au format Alpaca à l'aide des scripts situés dans le répertoire Self-Learning.
Pour les itérations initiales, suivez les étapes décrites dans 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
Pour les itérations suivantes, il est essentiel d’effectuer un filtrage et une fusion de trajectoire basés sur les connaissances avant d’exécuter le script de reformatage de trajectoire. Vous pouvez y parvenir en utilisant 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
Ensuite, lancez le processus d'auto-apprentissage en exécutant train.sh
et train_iter.sh
, comme spécifié dans les scripts situés dans Self-Learning/train.sh
et 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 }
}
Nous exprimons notre gratitude aux créateurs et contributeurs des projets suivants, qui ont considérablement influencé le développement de KnowAgent :
Nos sincères remerciements vont à tous les contributeurs pour leurs précieuses contributions dans le domaine !
Nous proposerons une maintenance à long terme pour corriger les bugs et résoudre les problèmes. Donc, si vous rencontrez des problèmes, veuillez nous en faire part.