Wissensgestützte Planung für LLM-basierte Agenten.
?Papier • Web
Unsere Entwicklung basiert auf mehreren Schlüsselschritten: Zunächst erstellen wir eine umfangreiche Aktionswissensdatenbank , die das Wissen zur Aktionsplanung für bestimmte Aufgaben zusammenführt. Diese Datenbank fungiert als externes Informationsreservoir und steuert den Aktionsgenerierungsprozess des Modells. Anschließend ermöglichen wir dem Modell durch die Umwandlung von Handlungswissen in Text, dieses Wissen tiefgreifend zu verstehen und bei der Erstellung von Handlungsverläufen zu nutzen. Schließlich nutzen wir in einer kenntnisreichen Selbstlernphase Trajektorien, die aus den iterativen Prozessen des Modells entwickelt wurden, um sein Verständnis und die Anwendung des Handlungswissens kontinuierlich zu verbessern. Dieser Prozess stärkt nicht nur die Planungsfähigkeiten der Agenten, sondern erweitert auch ihre Einsatzmöglichkeiten in komplexen Situationen.
Um mit KnowAgent zu beginnen, befolgen Sie diese einfachen Installationsschritte:
git clone https://github.com/zjunlp/KnowAgent.git
cd KnowAgent
pip install -r requirements.txt
Wir haben die HotpotQA- und ALFWorld-Datensätze unter Path_Generation/alfworld_run/data
bzw. Path_Generation/hotpotqa_run/data
platziert. Für die weitere Konfiguration empfehlen wir, mit der ursprünglichen Einrichtung von ALFWorld und FastChat fortzufahren.
Der Planungspfad-Generierungsprozess ist ein wesentlicher Bestandteil von KnowAgent. Sie finden die Skripts zum Ausführen der Planning Path Generation im Verzeichnis Path_Generation
, insbesondere run_alfworld.sh
und run_hotpotqa.sh
. Diese Skripte können mit Bash-Befehlen ausgeführt werden. Um die Skripte an Ihre Bedürfnisse anzupassen, können Sie den mode
ändern, um zwischen Trainingsmodus ( train
) und Testmodus ( test
) zu wechseln, und den Parameter llm_name
ändern, um ein anderes LLM zu verwenden:
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/
Hier veröffentlichen wir die von Llama-{7,13,70}b-chat synthetisierten Trajektorien vor dem Filtern in Google Drive.
Nach Erhalt der Planungspfade und entsprechenden Trajektorien beginnt der Prozess des kenntnisreichen Selbstlernens. Die generierten Trajektorien müssen zunächst mit den Skripten im Self-Learning-Verzeichnis in das Alpaca-Format konvertiert werden.
Befolgen Sie für die ersten Iterationen die in traj_reformat.sh
beschriebenen Schritte:
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
Für nachfolgende Iterationen ist es wichtig, vor der Ausführung des Trajektorien-Neuformatierungsskripts eine wissensbasierte Trajektorienfilterung und -zusammenführung durchzuführen. Sie können dies mit traj_merge_and_filter.sh
erreichen:
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
Starten Sie als Nächstes den Self-Learning-Prozess, indem Sie train.sh
und train_iter.sh
ausführen, wie in den Skripten in Self-Learning/train.sh
und Self-Learning/train_iter.sh
angegeben:
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 }
}
Wir danken den Schöpfern und Mitwirkenden der folgenden Projekte, die die Entwicklung von KnowAgent maßgeblich beeinflusst haben:
Unser herzlicher Dank geht an alle Mitwirkenden für ihre unschätzbaren Beiträge auf diesem Gebiet!
Wir bieten eine langfristige Wartung an, um Fehler zu beheben und Probleme zu lösen. Wenn Sie also Probleme haben, wenden Sie sich bitte an uns.