Planejamento Aumentado de Conhecimento para Agentes Baseados em LLM.
?Papel • Web
Nosso desenvolvimento é baseado em várias etapas principais: Inicialmente , criamos uma extensa base de conhecimento de ação , que reúne conhecimentos de planejamento de ação pertinentes a tarefas específicas. Este banco de dados atua como um reservatório externo de informações, orientando o processo de geração de ações do modelo. Posteriormente , ao converter o conhecimento da ação em texto, permitimos que o modelo compreenda profundamente e utilize esse conhecimento na criação de trajetórias de ação. Finalmente , através de uma fase de autoaprendizagem informada , utilizamos trajetórias desenvolvidas a partir dos processos iterativos do modelo para melhorar continuamente a sua compreensão e aplicação do conhecimento da ação. Este processo não só fortalece as capacidades de planeamento dos agentes, mas também aumenta o seu potencial de aplicação em situações complexas.
Para começar a usar o KnowAgent, siga estas etapas simples de instalação:
git clone https://github.com/zjunlp/KnowAgent.git
cd KnowAgent
pip install -r requirements.txt
Colocamos os conjuntos de dados HotpotQA e ALFWorld em Path_Generation/alfworld_run/data
e Path_Generation/hotpotqa_run/data
respectivamente. Para configurações adicionais, recomendamos prosseguir com a configuração original do ALFWorld e FastChat.
O processo de geração do caminho de planejamento é parte integrante do KnowAgent. É possível localizar os scripts para executar a geração do caminho de planejamento no diretório Path_Generation
, especificamente run_alfworld.sh
e run_hotpotqa.sh
. Esses scripts podem ser executados usando comandos bash. Para adaptar os scripts às suas necessidades, você pode modificar o parâmetro mode
para alternar entre os modos de treinamento ( train
) e teste ( test
) e alterar o parâmetro llm_name
para usar um 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/
Aqui liberamos as trajetórias sintetizadas pelo Llama-{7,13,70}b-chat no Google Drive antes da filtragem.
Após a obtenção dos caminhos de planejamento e trajetórias correspondentes, inicia-se o processo de Autoaprendizagem Conhecedora. As trajetórias geradas devem primeiro ser convertidas para o formato Alpaca utilizando os scripts localizados no diretório Self-Learning.
Para as iterações iniciais, siga as etapas descritas em 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 iterações subsequentes, é essencial realizar a Filtragem e Mesclagem de Trajetórias Baseadas em Conhecimento antes de executar o script de reformatação de trajetória. Você pode conseguir isso 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
Em seguida, inicie o processo de autoaprendizagem executando train.sh
e train_iter.sh
, conforme especificado nos scripts localizados em Self-Learning/train.sh
e 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 }
}
Expressamos nossa gratidão aos criadores e colaboradores dos seguintes projetos, que influenciaram significativamente o desenvolvimento do KnowAgent:
Nossos sinceros agradecimentos a todos os colaboradores por suas inestimáveis contribuições para o campo!
Ofereceremos manutenção de longo prazo para corrigir bugs e resolver problemas. Então, se você tiver algum problema, por favor, coloque-nos.