AgentTuning:为大语言模型赋能通用智能体能力
🤗 模型 (AgentLM-70B) • 🤗 数据集 (AgentInstruct) • 📃 论文 • 🌐 项目主页
AgentTuning是首次尝试使用多个智能体任务的交互轨迹对大语言模型进行指令微调。评估结果表明,AgentTuning在保持强大的通用语言能力的同时,还能够赋予大语言模型智能体能力,并在未见过的智能体任务上表现出良好的泛化能力。我们已开源AgentInstruct数据集和AgentLM模型。
主要结果
AgentInstruct
AgentInstruct是一个精心策划的数据集,包含1,866个高质量交互,旨在提升AI智能体在6个不同真实世界任务中的表现。
- 🔍 思维链 - 利用ReAct的力量,为每个行动提供详细的思考解释,确保对模型决策过程的深入理解。
- 🌍 多样性 - 涵盖从日常家务到数据库操作等6个真实场景,平均对话轮次从5到35不等。
- 🎯 精确性 - 并非GPT-4的所有轨迹都有效!我们使用严格的奖励机制进行筛选,以确保最高质量。
- ✅ 质量保证 - 进行严格检查以避免数据泄露,确保数据集质量纯净。
AgentInstruct数据集可在🤗Huggingface仓库获取。
AgentLM
AgentLM模型是通过在AgentInstruct数据集和来自Llama2-chat系列的ShareGPT数据集上进行混合训练而产生的。
这些模型遵循Llama-2-chat的对话格式,系统提示固定为You are a helpful, respectful and honest assistant.
7B、13B和70B模型可在Huggingface模型中心获取。
模型 | Huggingface仓库 |
---|---|
AgentLM-7B | 🤗Huggingface仓库 |
AgentLM-13B | 🤗Huggingface仓库 |
AgentLM-70B | 🤗Huggingface仓库 |
运行AgentLM
我们使用Text-Generation-Inference来加速评估过程。
您可以通过以下命令启动AgentLM-70b实例:
cd docker
docker compose -f agentlm-70b.yml up
成功执行后,将在30070端口上提供客户端。以下是发起请求的示例:
curl 127.0.0.1:30070/generate \
-X POST \
-H 'Content-Type: application/json' \
-d '{"inputs": "[INST] <<SYS>>\nYou are a helpful, respectful and honest assistant.\n<</SYS>>\n\nHello! [/INST]", "parameters":{"temperature": 1.0}}'
# {"generated_text":"Hello! How can I help you today? "}
如果有更多可用的GPU,您可以复制Docker Compose文件中的服务来创建多个推理实例。
评估
以下是我们评估任务的详细信息,包括6个训练内任务和6个训练外任务。
训练内任务
6个训练内任务选自AgentBench。然而,由于AgentBench仍在积极开发中,最新分支的结果可能无法完全复现论文中报告的结果。本项目的评估代码位于./AgentBench.old。
训练外任务
训练外任务从以下框架重新编译而来:
任务 | AgentTuning设置 | 原始仓库 |
---|---|---|
SciWorld | 📂 eval_heldout/science-world | 💻 allenai/ScienceWorld |
MiniWoB++ | 📂 eval_heldout/miniwob++ | 💻 Farama-Foundation/miniwob-plusplus |
HotpotQA | 📂 eval_heldout/hotpotQA | 💻 salesforce/BOLAA |
ReWOO | 📂 eval_heldout/rewoo | 💻 billxbf/ReWOO |
WebArena | 📂 eval_heldout/webarena | 💻 web-arena-x/webarena |
Digital Card Game | 💻 AgentBench.old ( Extend 分割 ) | 💻 THUDM/AgentBench |
通用任务
MMLU设置:
-
将14k多选题下载到
./data
:cd data wget https://people.eecs.berkeley.edu/~hendrycks/data.tar tar xf data.tar cd ..
-
通过执行评估脚本来评估Hf模型(组织/名称或检查点路径):
python eval_general/evaluate_mmlu_hf.py -c THUDM/AgentLM-70b
GSM8k设置:
-
启动TGI工作进程
-
运行评估
python eval_general/evaluate_gsm8k_tgi.py --port 30070
使用
--sample-input-file
加载本地数据集,否则将加载GSM8K进行评估。
MT-Bench设置:
-
在本地安装FastChat
git clone https://github.com/lm-sys/FastChat.git pip install -e FastChat
-
启动TGI工作进程
-
运行评估脚本:
python eval_general/eval_mt_bench_tgi.py --host 127.0.0.1 --port 30070 --model-id agentlm-70b
-
使用GPT-4评估答案
cd FastChat/fastchat/llm_judge OPENAI_API_KEY=<your-api-key> python gen_judgment.py --model-list agentlm-70b --parallel <number-of-cuncurrent-requests>
引用
如果您觉得我们的工作有用,请考虑引用AgentTuning:
@misc{zeng2023agenttuning,
title={AgentTuning: Enabling Generalized Agent Abilities for LLMs},
author={Aohan Zeng and Mingdao Liu and Rui Lu and Bowen Wang and Xiao Liu and Yuxiao Dong and Jie Tang},
year={2023},
eprint={2310.12823},
archivePrefix={arXiv},
primaryClass={cs.CL}
}