🛠️ToolBench🤖
模型 • 数据发布 • 网页演示 • 工具评估 • 论文 • 引用
🔨本项目(ToolLLM)旨在构建开源、大规模、高质量的指令调优SFT数据,以促进具有通用工具使用能力的强大LLM的构建。我们的目标是使开源LLM掌握数千种不同的真实世界API。我们通过收集高质量的指令调优数据集来实现这一目标。该数据集是使用最新的ChatGPT(gpt-3.5-turbo-16k)自动构建的,该模型已升级并具有增强的函数调用功能。我们提供数据集、相应的训练和评估脚本,以及在ToolBench上微调的性能强大的ToolLLaMA模型。
2024年8月更新 我们已更新了RapidAPI服务器的IP地址,请确保您获取了最新代码。您也可以使用这里的代码在本地构建。
💁♂️💁💁♀️ 加入我们的Discord!
阅读中文版。
最新动态
-
[2024/3/17] 欢迎使用**StableToolBench: 一个基于API响应模拟的稳定可靠**的本地toolbench服务器。深入了解StableToolBench背后的技术,请参阅论文,并在项目主页探索更多内容。代码可在这里获取。
-
[2023/9/29] 发布了更稳定且覆盖更多模型(包括GPT4)的新版本ToolEval!详情请参考ToolEval。此外,我们发布了具有更强工具使用能力的ToolLLaMA-2-7b-v2。请使用ToolLLaMA-2-7b-v2模型和新版本ToolEval重现我们最新的实验结果。
-
[2023/8/30] 数据更新,包含超过120,000个解决方案路径注释和完整的推理思路!请在Google Drive上查找
data.zip
。 -
[2023/8/8] 不再产生幻觉!发布ToolLLaMA-2-7b-v1(从LLaMA-2-7b微调),API幻觉率低于ChatGPT。
-
[2023/8/4] 我们提供RapidAPI后端服务,让您无需使用自己的RapidAPI密钥和订阅API。请填写我们的表单。我们将尽快审核并向您发送ToolBench密钥以开始使用!
-
[2023/8/1] 我们的论文已发布。
-
[2023/7/27] 发布新版本ToolBench。
✨以下是数据集构建、训练和评估的概览。
✨✨特点:
- API收集:我们从RapidAPI(一个托管大量由开发者提供的真实世界API的平台)收集了16464个具有代表性的REST API。
- 指令生成:我们精心策划了涉及单工具和多工具场景的指令。
- 答案注释:我们开发了一种新颖的深度优先搜索决策树(DFSDT)来增强LLM的规划和推理能力,这显著提高了注释效率,成功注释了那些无法用CoT或ReACT回答的复杂指令。我们提供的响应不仅包括最终答案,还包括模型的推理过程、工具执行和工具执行结果。
- API检索器:我们整合了API检索功能,为ToolLLaMA提供开放域工具使用能力。
- 所有数据都是由OpenAI API自动生成并经过我们筛选的,整个数据创建过程易于扩展。
我们还提供了ToolLLaMA的使用演示
目前,我们的ToolLLaMA在工具使用方面已达到ChatGPT(turbo-16k)的性能水平。未来,我们将持续改进数据质量并增加对真实世界工具的覆盖范围。
这里是ToolBench的*旧版本*。
数据
👐ToolBench仅用于研究和教育目的,不应被解释为反映本数据集创建者、所有者或贡献者的观点或意见。它以Apache License 2.0发布。以下是数据的统计信息:
工具数量 | API数量 | 实例数量 | 实际API调用 | 推理轨迹 |
---|---|---|---|---|
3451 | 16464 | 126486 | 469585 | 4.0 |
我们从RapidAPI抓取了16000多个真实世界的API,并策划了涉及这些API的真实人类指令。以下展示了RapidAPI的层次结构和我们的指令生成过程。
ToolBench包含单工具和多工具场景。多工具场景可进一步分为类内多工具和集合内多工具。我们在所有场景中使用DFSDT方法进行数据创建。以下是使用DFSDT方法进行数据创建过程的示意图:
数据发布
请使用以下链接下载我们的数据集:谷歌云盘或清华云。请注意 data_0801
是旧版数据。
文件结构如下:
├── /data/
│ ├── /instruction/
│ ├── /answer/
│ ├── /toolenv/
│ ├── /retrieval/
│ ├── /test_instruction/
│ ├── /test_query_ids/
│ ├── /retrieval_test_query_ids/
│ ├── toolllama_G123_dfs_train.json
│ └── toolllama_G123_dfs_eval.json
├── /reproduction_data/
│ ├── /chatgpt_cot/
│ ├── /chatgpt_dfs/
│ ├── ...
│ └── /toolllama_dfs/
以下是对 data
目录的一些描述:
instruction
和answer
:指令数据和解决方案路径注释数据。G1
、G2
、G3
分别指单工具、类内多工具和集合内多工具数据。我们还有一个用于可视化的 Atlas Explorer。toolenv
:工具环境相关数据,包含 API jsons、API 代码和 API 示例响应。retrieval
:此目录包含用于工具检索的数据。test_instruction
和test_query_ids
:我们从每个测试集中抽取200个实例。test_instruction
目录包含每个测试集的测试查询,test_query_ids
包含每个测试集中测试实例的查询 ID。retrieval_test_query_ids
:此目录包含检索器的测试实例查询 ID。toolllama_G123_dfs_train.json
和toolllama_G123_dfs_eval.json
:可直接用于训练 toolllama 并复现我们结果的预处理数据。关于预处理详情,我们将 G1、G2 和 G3 数据分别划分为训练、评估和测试部分,并在主要实验中合并训练数据进行训练。
请确保您已下载必要的数据并将目录(例如 data/
)放在 ToolBench/
下,以便以下 bash 脚本可以导航到相关数据。
🤖模型
我们发布了在最新版本数据上训练的 ToolLLaMA-2-7b-v2,以及在 0801 版本数据上训练的 ToolLLaMA-7b-v1 和 ToolLLaMA-7b-LoRA-v1。所有模型都以多任务方式在发布的数据集上训练。我们还发布了在我们实验设置下训练的工具检索器。
🚀微调
安装
克隆此仓库并进入 ToolBench 文件夹。
git clone git@github.com:OpenBMB/ToolBench.git
cd ToolBench
安装软件包(python>=3.9)
pip install -r requirements.txt
或仅用于 ToolEval
pip install -r toolbench/tooleval/requirements.txt
准备数据和工具环境:
wget --no-check-certificate 'https://drive.google.com/uc?export=download&id=1XFjDxVZdUY7TXYF2yvzx3pJlS2fy78jk&confirm=yes' -O data.zip
unzip data.zip
https://drive.google.com/file/d/1XFjDxVZdUY7TXYF2yvzx3pJlS2fy78jk/view?usp=drive_link
训练检索器
- 数据预处理:
export PYTHONPATH=./
python preprocess/preprocess_retriever_data.py \
--query_file data/instruction/G1_query.json \
--index_file data/test_query_ids/G1_instruction_test_query_ids.json \
--dataset_name G1 \
--output_dir data/retrieval/G1
- 然后运行以下命令训练工具检索器:
export PYTHONPATH=./
python toolbench/retrieval/train.py \
--data_path data/retrieval/G1/ \
--model_name bert-base-uncased \
--output_path retrieval_model \
--num_epochs 5 \
--train_batch_size 32 \
--learning_rate 2e-5 \
--warmup_steps 500 \
--max_seq_length 256
训练 ToolLLaMA
- 数据预处理,以 G1_answer 为例:
export PYTHONPATH=./
python preprocess/preprocess_toolllama_data.py \
--tool_data_dir data/answer/G1_answer \
--method DFS_woFilter_w2 \
--output_file data/answer/toolllama_G1_dfs.json
- 我们的训练代码基于 FastChat。您可以使用以下命令在 2 x A100(80GB)上训练 ToolLLaMA-7b,使用我们预处理的数据
data/toolllama_G123_dfs_train.json
。关于预处理详情,我们将 G1、G2 和 G3 数据分别划分为训练、评估和测试部分,并在主要实验中合并训练数据进行训练:
export PYTHONPATH=./
torchrun --nproc_per_node=2 --master_port=20001 toolbench/train/train_mem.py \
--model_name_or_path huggyllama/llama-7b \
--data_path data/toolllama_G123_dfs_train.json \
--eval_data_path data/toolllama_G123_dfs_eval.json \
--conv_template tool-llama-single-round \
--bf16 True \
--output_dir toolllama \
--num_train_epochs 2 \
--per_device_train_batch_size 2 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 8 \
--evaluation_strategy "epoch" \
--prediction_loss_only \
--save_strategy "epoch" \
--save_total_limit 8 \
--learning_rate 5e-5 \
--weight_decay 0. \
--warmup_ratio 0.04 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--fsdp "full_shard auto_wrap" \
--fsdp_transformer_layer_cls_to_wrap 'LlamaDecoderLayer' \
--tf32 True \
--source_model_max_length 2048 \
--model_max_length 8192 \
--gradient_checkpointing True \
--lazy_preprocess True \
--report_to none
训练 lora 版本:
export PYTHONPATH=./
deepspeed --master_port=20001 toolbench/train/train_lora.py \
--model_name_or_path huggyllama/llama-7b \
--data_path data/toolllama_G123_dfs_train.json \
--eval_data_path data/toolllama_G123_dfs_eval.json \
--conv_template tool-llama-single-round \
--bf16 True \
--output_dir toolllama_lora \
--num_train_epochs 5 \
--per_device_train_batch_size 4 \
--per_device_eval_batch_size 2 \
--gradient_accumulation_steps 2 \
--evaluation_strategy "epoch" \
--prediction_loss_only \
--save_strategy "epoch" \
--save_total_limit 8 \
--learning_rate 5e-5 \
--weight_decay 0. \
--warmup_ratio 0.04 \
--lr_scheduler_type "cosine" \
--logging_steps 1 \
--source_model_max_length 2048 \
--model_max_length 8192 \
--gradient_checkpointing True \
--lazy_preprocess True \
--deepspeed ds_configs/stage2.json \
--report_to none
使用我们的 RapidAPI 服务器进行推理
请先填写表单,审核后我们将发送 toolbench 密钥给您。然后准备您的 toolbench 密钥:
export TOOLBENCH_KEY="your_toolbench_key"
对于 ToolLLaMA
要使用ToolLLaMA进行推理,请运行以下命令:
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model toolllama \
--model_path ToolBench/ToolLLaMA-7b \
--max_observation_length 1024 \
--observ_compress_method truncate \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file toolllama_dfs_inference_result \
--toolbench_key $TOOLBENCH_KEY
对于ToolLLaMA-LoRA:
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model toolllama \
--model_path huggyllama/llama-7b \
--lora \
--lora_path /path/to/your/downloaded/ToolLLaMA-7b-LoRA \
--max_observation_length 1024 \
--observ_compress_method truncate \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file toolllama_lora_dfs_inference_result \
--toolbench_key $TOOLBENCH_KEY
对于开放域设置下的ToolLLaMA-LoRA,运行:
export PYTHONPATH=./
python toolbench/inference/qa_pipeline_open_domain.py \
--tool_root_dir data/toolenv/tools/ \
--corpus_tsv_path data/retrieval/G1/corpus.tsv \
--retrieval_model_path /path/to/your/retrival_model \
--retrieved_api_nums 5 \
--backbone_model toolllama \
--model_path huggyllama/llama-7b \
--lora \
--lora_path /path/to/your/toolllama_lora \
--max_observation_length 1024 \
--observ_compress_method truncate \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file toolllama_lora_dfs_open_domain_inference_result \
--toolbench_key $TOOLBENCH_KEY
对于OpenAI模型
要使用ChatGPT,运行:
export TOOLBENCH_KEY=""
export OPENAI_KEY=""
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model chatgpt_function \
--openai_key $OPENAI_KEY \
--max_observation_length 1024 \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file chatgpt_dfs_inference_result \
--toolbench_key $TOOLBENCH_KEY
要使用Text-Davinci-003,运行:
export TOOLBENCH_KEY=""
export OPENAI_KEY=""
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model davinci \
--openai_key $OPENAI_KEY \
--max_observation_length 1024 \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file davinci_dfs_inference_result \
--toolbench_key $TOOLBENCH_KEY
使用您自己的RapidAPI账户进行推理
要使用自定义RapidAPI账户进行推理,请通过rapidapi_key
传递您的rapidapi密钥,并在脚本中指定use_rapidapi_key
参数:
export RAPIDAPI_KEY=""
export OPENAI_KEY=""
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model chatgpt_function \
--openai_key $OPENAI_KEY \
--max_observation_length 1024 \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file chatgpt_dfs_inference_result \
--rapidapi_key $RAPIDAPI_KEY \
--use_rapidapi_key
API自定义
要使用自定义API进行推理,您应该准备API文档和代码,然后修改您的查询。例如,要添加一个返回"hello world"字符串的API hello_world:
- API文档:首先生成API文档
hello_world.json
,它应该遵循以下格式:
{
"tool_description": "返回hello world。",
"tool_name": "hello world",
"title": "hello world",
"api_list": [
{
"name": "get_hello_world",
"url": "",
"description": "获取'hello world'。",
"method": "GET",
"required_parameters": [],
"optional_parameters": []
}
],
"standardized_name": "hello_world"
}
然后将其放在data/toolenv/tools/
下的特定类别中,可以是49个现有类别之一或新类别,例如Customized
。
- API代码:在
Customized
目录下创建一个名为hello_world
的目录。然后编写一个api.py
代码来实现API的功能,并将其放在Customized/hello_world/
下。API代码可以按以下格式编写:
def get_hello_world():
"""
获取hello world
"""
observation = "hello world"
return observation
现在data/toolenv/
下的文件结构应该是:
├── /tools/
│ ├── /Sports/
│ │ ├── basketball.json
│ │ ├── /basketball/
│ │ │ └── api.py
│ │ └── ...
│ ├── ...
│ ├── /Customized/
│ │ ├── hello_world.json
│ │ ├── /hello_world/
│ │ │ └── api.py
└── response_examples
- 修改您的查询文件,查询文件应遵循以下格式:
[
{
"query": "我想获取一个'hello world'字符串。",
"query_id": 200001,
"api_list": [
{
"category_name": "Customized",
"tool_name": "hello world",
"api_name": "get_hello_world"
}
]
}
]
- 最后,我们可以通过运行以下命令使用hello_world API进行推理:
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model toolllama \
--model_path ToolBench/ToolLLaMA-7b \
--max_observation_length 1024 \
--observ_compress_method truncate \
--method DFS_woFilter_w2 \
--input_query_file /path/to/your/query/file \
--output_answer_file /path/to/your/output/file \
--api_customization
目前我们仅支持在封闭域设置下使用自定义API。我们计划很快支持开放域。
设置和运行界面
ToolBench包含一个基于Chatbot UI的Web UI,经过修改以包含工具的使用。它由两部分组成:后端服务器和chatbot-ui-toolllama。这里有一个视频演示。
Web UI
git clone https://github.com/lilbillybiscuit/chatbot-ui-toolllama
cd chatbot-ui-toolllama
npm install
npm run dev
应用将在http://localhost:3000/
上可用。
后端服务器
export PYTHONPATH=./
python toolbench/inference/toolbench_server.py \
--tool_root_dir data/toolenv/tools/ \
--corpus_tsv_path data/retrieval/G1/corpus.tsv \
--retrieval_model_path /path/to/your/retrival_model \
--retrieved_api_nums 5 \
--backbone_model toolllama \
--model_path huggyllama/llama-7b \
--lora \
--lora_path /path/to/your/toolllama_lora \
--max_observation_length 1024 \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file toolllama_lora_dfs_open_domain_result \
--rapidapi_key $RAPIDAPIKEY
此服务器将在http://localhost:5000/
上可用。要开始请求,请调用http://localhost:5000/stream
,使用GET或POST请求,包含具有以下字段的JSON对象:
{
"text": "今天纽约的天气如何?",
"top_k": 5,
"method": "DFS_woFilter_w2"
}
ToolEval
通过在 ToolBench 上微调 LLaMA,我们得到了 ToolLLaMA。考虑到人工评估可能耗时较长,我们参照 AlpacaEval 开发了一个高效的机器评估器 ToolEval,它包含两个评估指标:
- 通过率:计算在有限的 OpenAI API 调用次数内成功完成指令的比例。
- 偏好度:通过比较给定指令的两个答案(动作序列)来衡量。我们预先定义了一组更好答案的标准,并将其组织为 ChatGPT 的提示。我们向评估器提供测试指令和两个候选答案,并获取其偏好。我们对每对答案进行多次评估以提高系统的可靠性。然后我们计算胜率(被评估器偏好的百分比)。更多细节可以在我们的论文中找到。
为了验证 ChatGPT 评估器在通过率和胜率方面的可靠性,我们从四种不同的方法(ChatGPT+ReACT、ChatGPT+DFSDT、ToolLLaMA+DFSDT 和 GPT4+DFSDT)中抽样,为每种方法的 300 条测试指令获取解决方案对。然后我们让人类标注 ChatGPT+DFSDT、ToolLLaMA+DFSDT 和 GPT4+DFSDT 的通过率,以及 ChatGPT+ReACT 和 ChatGPT+DFSDT 之间的胜率。
我们的 ChatGPT 评估器在通过率方面与人类标注者达到了 87.1% 的高度一致性,在胜率方面达到了 80.3% 的一致性。这个结果表明,我们的评估器生成的评估结果与人类非常相似,可以被视为一个可靠的评估器,能够模拟人类对通过率和胜率的评估。
关于 ToolEval 的更多细节可以在我们的论文中找到。
使用 ToolEval 进行评估
安装
安装包(python>=3.9)
pip install -r requirements.txt
评估
如果你想重现官方结果,请通过 Google Drive 下载复现数据 reproduction_data.zip
,解压后将 reproduction_data
放在 ToolBench/data/
下,并跳过数据准备过程。
- 数据准备。要使用 ToolEval 评估你自己的模型和方法,首先你需要准备六个测试子集的所有模型预测。创建一个以你的模型和方法命名的目录,例如
chatgpt_cot
,然后将每个测试集的预测放在该目录下。目录的文件结构应该是:
├── /chatgpt_cot/
│ ├── /G1_instruction/
│ │ ├── /10160_CoT@1.json
│ │ └── ...
│ ├── /G1_tool/
│ │ ├── /10221_CoT@1.json
│ │ └── ...
│ ├── ...
│ ├── /G3_instruction/
│ │ ├── /10221_CoT@1.json
│ │ └── ...
然后通过运行以下命令预处理预测:
export RAW_ANSWER_PATH=../../data/reproduction_data/model_predictions/
export CONVERTED_ANSWER_PATH=../../data/reproduction_data/model_predictions_converted/
export MODEL_NAME=chatgpt_cot
export METHOD=CoT
mkdir ${CONVERTED_ANSWER_PATH}/${MODEL_NAME}
for test_set in G1_instruction G1_category G1_tool G2_category G2_instruction G3_instruction
do
answer_dir=${RAW_ANSWER_PATH}/${MODEL_NAME}/${test_set}
output_file=${CONVERTED_ANSWER_PATH}/${MODEL_NAME}/${test_set}.json
python convert_to_answer_format.py\
--answer_dir ${answer_dir} \
--method ${METHOD} \
--output ${output_file}
done
之后,检查 ${CONVERTED_ANSWER_PATH}/${MODEL_NAME}
下是否有测试集的预处理 json 文件。如果有,你就可以运行以下评估流程。如果没有,检查模型预测是否有问题。
- OpenAI 密钥。准备你的 OpenAI 密钥以使用我们的评估器。密钥应存储在一个 json 文件中,例如
path/to/your/openai_key_json_file.json
:
[
{
"username": "your_user_name",
"passwd": "your_password",
"api_key": "your_openai_key",
"organization": "your_organization"
},
...
]
- 通过率:
export CONVERTED_ANSWER_PATH=../../data/reproduction_data/model_predictions_converted/
export SAVE_PATH=pass_rate_results
export CANDIDATE_MODEL=chatgpt_cot
export API_POOL_FILE=path/to/your/openai_key_json_file.json
python eval_pass_rate.py \
--converted_answer_path ${CONVERTED_ANSWER_PATH} \
--save_path ${SAVE_PATH} \
--reference_model ${CANDIDATE_MODEL} \
--test_ids ../../data/test_ids/ \
--max_eval_threads 20 \
--evaluate_times 7
结果文件将存储在 ${SAVE_PATH} 下。
- 胜率。以下示例以 ChatGPT-ReACT 作为参考模型,GPT4-ReACT 作为候选模型。注意,你需要先获得两个模型的通过率结果,然后运行以下命令来评估 GPT4-ReACT 的偏好结果:
export CONVERTED_ANSWER_PATH=../../data/reproduction_data/model_predictions_converted/
export SAVE_PATH=preference_results
export PASS_TARE_PATH=pass_rate_results
export REFERENCE_MODEL=chatgpt_cot
export CANDIDATE_MODEL=gpt-4-0613_cot
export API_POOL_FILE=path/to/your/openai_key_json_file.json
python eval_preference.py \
--converted_answer_path ${CONVERTED_ANSWER_PATH} \
--reference_model ${REFERENCE_MODEL} \
--output_model ${CANDIDATE_MODEL} \
--test_ids ../../data/test_ids/ \
--save_path ${SAVE_PATH} \
--pass_rate_result_path ${PASS_TARE_PATH} \
--max_eval_threads 20 \
--use_pass_rate true \
--evaluate_times 7
结果文件将存储在 ${SAVE_PATH} 下。
更多详情请参考 ToolEval。
📊 模型实验结果
在我们的主要实验中,ToolLLaMA(v2) 展示了处理单工具和复杂多工具指令的强大能力,与 ChatGPT 不相上下。 以下是主要结果。每个模型的胜率都是与 ChatGPT-ReACT 比较得出的。
通过率:
方法 | 模型 | I1-指令 | I1-工具 | I1-类别 | I2-指令 | I2-类别 | I3-指令 | 平均值 |
---|---|---|---|---|---|---|---|---|
ReACT | Claude-2 | 5.5 | 3.5 | 5.5 | 6 | 6 | 14 | 6.8 |
Text-Davinci-003 | 12 | 20 | 20 | 8.5 | 14.5 | 24 | 16.5 | |
ChatGPT | 41.5 | 44 | 44.5 | 42.5 | 46.5 | 22 | 40.2 | |
ToolLLaMA | 25 | 29 | 33 | 30.5 | 31.5 | 25 | 29 | |
GPT4 | 53.5 | 50.0 | 53.5 | 67.0 | 72.0 | 47.0 | 57.2 | |
DFSDT | Claude-2 | 20.5 | 31 | 18.5 | 17 | 20.5 | 28 | 22.6 |
Text-Davinci-003 | 43.5 | 44 | 46 | 37 | 42 | 46 | 43.1 | |
ChatGPT | 54.5 | 65 | 60.5 | 75 | 71.5 | 62 | 64.8 | |
ToolLLaMA | 57 | 61 | 62 | 77 | 77 | 66 | 66.7 | |
ToolLLaMA-Retreiver | 64 | 64 | 60.5 | 81.5 | 68.5 | 65 | 67.3 | |
GPT4 | 60 | 71.5 | 67 | 79.5 | 77.5 | 71 | 71.1 | |
胜率: (参考模型: ChatGPT-ReACT) | ||||||||
方法 | 模型 | I1-指令 | I1-工具 | I1-类别 | I2-指令 | I2-类别 | I3-指令 | 平均值 |
-------- | --------------------- | --------- | --------- | --------- | --------- | --------- | --------- | -------- |
ReACT | Claude-2 | 31 | 27.8 | 33.8 | 35 | 31.5 | 47.5 | 34.4 |
Text-Davinci-003 | 28.5 | 35.3 | 31 | 29.8 | 29.8 | 45 | 33.2 | |
ToolLLaMA | 45 | 42 | 47.5 | 50.8 | 41.8 | 55 | 47 | |
GPT4 | 60 | 58.8 | 63.5 | 65.8 | 60.3 | 78 | 64.4 | |
DFSDT | Claude-2 | 38 | 44.3 | 43.3 | 36.8 | 33.5 | 65 | 43.5 |
Text-Davinci-003 | 40.3 | 43.8 | 46.8 | 40.5 | 43.3 | 63 | 46.3 | |
ChatGPT | 60.5 | 62 | 57.3 | 72 | 64.8 | 69 | 64.3 | |
ToolLLaMA | 55 | 55.3 | 54.5 | 68.5 | 58 | 69 | 60 | |
ToolLLaMA-Retreiver | 62.3 | 59 | 55 | 68.5 | 60.8 | 73 | 63.1 | |
GPT4 | 67.5 | 67.8 | 66.5 | 73.3 | 63.3 | 84 | 70.4 |
待办事项
- ToolLLaMA将达到GPT-4的工具使用能力。
工具学习资源
随着基础模型的强大能力,我们热切期待看到它们在操作各种工具方面的应用。更多资源请参考以下内容:
引用
如果您喜欢ToolBench,欢迎引用我们。
@misc{qin2023toolllm,
title={ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs},
author={Yujia Qin and Shihao Liang and Yining Ye and Kunlun Zhu and Lan Yan and Yaxi Lu and Yankai Lin and Xin Cong and Xiangru Tang and Bill Qian and Sihan Zhao and Runchu Tian and Ruobing Xie and Jie Zhou and Mark Gerstein and Dahai Li and Zhiyuan Liu and Maosong Sun},
year={2023},
eprint={2307.16789},
archivePrefix={arXiv},
primaryClass={cs.AI}
}
@misc{qin2023tool,
title={Tool Learning with Foundation Models},
author={Yujia Qin and Shengding Hu and Yankai Lin and Weize Chen and Ning Ding and Ganqu Cui and Zheni Zeng and Yufei Huang and Chaojun Xiao and Chi Han and Yi Ren Fung and Yusheng Su and Huadong Wang and Cheng Qian and Runchu Tian and Kunlun Zhu and Shihao Liang and Xingyu Shen and Bokai Xu and Zhen Zhang and Yining Ye and Bowen Li and Ziwei Tang and Jing Yi and Yuzhang Zhu and Zhenning Dai and Lan Yan and Xin Cong and Yaxi Lu and Weilin Zhao and Yuxiang Huang and Junxi Yan and Xu Han and Xian Sun and Dahai Li and Jason Phang and Cheng Yang and Tongshuang Wu and Heng Ji and Zhiyuan Liu and Maosong Sun},
year={2023},
eprint={2304.08354},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@misc{guo2024stabletoolbench,
title={StableToolBench: Towards Stable Large-Scale Benchmarking on Tool Learning of Large Language Models},
author={Guo, Zhicheng and Cheng, Sijie and Wang, Hao and Liang, Shihao and Qin, Yujia and Li, Peng and Liu, Zhiyuan and Sun, Maosong and Liu, Yang},
year={2024},
eprint={2403.07714},
archivePrefix={arXiv},
primaryClass={cs.CL}
}