基于法学硕士的代理人的知识增强规划。
?纸质•网络
我们的发展基于几个关键步骤:首先,我们创建了一个广泛的行动知识库,其中合并了与特定任务相关的行动规划知识。该数据库充当外部信息库,指导模型的动作生成过程。随后,通过将动作知识转换为文本,我们使模型能够深入理解并利用这些知识来创建动作轨迹。最后,通过知识自学阶段,我们使用模型迭代过程中开发的轨迹来不断提高其对行动知识的理解和应用。这个过程不仅增强了智能体的规划能力,而且增强了它们在复杂情况下的应用潜力。
要开始使用 KnowAgent,请按照以下简单的安装步骤操作:
git clone https://github.com/zjunlp/KnowAgent.git
cd KnowAgent
pip install -r requirements.txt
我们将 HotpotQA 和 ALFWorld 数据集分别放置在Path_Generation/alfworld_run/data
和Path_Generation/hotpotqa_run/data
下。如需进一步配置,我们建议继续进行 ALFWorld 和 FastChat 的原始设置。
规划路径生成过程是 KnowAgent 不可或缺的一部分。您可以在Path_Generation
目录中找到用于运行规划路径生成的脚本,特别是run_alfworld.sh
和run_hotpotqa.sh
。这些脚本可以使用 bash 命令执行。要根据您的需要定制脚本,您可以修改mode
参数以在训练 ( train
) 和测试 ( test
) 模式之间切换,并更改llm_name
参数以使用不同的 LLM:
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/
在这里,我们发布了 Llama-{7,13,70}b-chat 在过滤之前在 Google Drive 中合成的轨迹。
获得规划路径和相应的轨迹后,知识型自学习过程就开始了。生成的轨迹必须首先使用位于自学目录中的脚本转换为 Alpaca 格式。
对于初始迭代,请按照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
对于后续迭代,在运行轨迹重新格式化脚本之前执行基于知识的轨迹过滤和合并至关重要。您可以使用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
接下来,通过运行train.sh
和train_iter.sh
来启动自学习过程,如Self-Learning/train.sh
和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 }
}
我们对以下项目的创建者和贡献者表示感谢,这些项目对 KnowAgent 的发展产生了重大影响:
我们衷心感谢所有贡献者对该领域做出的宝贵贡献!
我们将提供长期维护来修复错误并解决问题。因此,如果您有任何问题,请向我们提出问题。