ToolBench

ToolBench

大规模工具使用指令数据集与开源语言模型

ToolBench项目构建了大规模的指令微调数据集,旨在提升语言模型的工具使用能力。该项目收集了16464个真实API,覆盖单工具和多工具场景,采用深度优先搜索决策树方法生成注释。项目提供训练脚本和微调后的ToolLLaMA模型,其工具使用能力达到了与ChatGPT相当的水平。

ToolBenchAI工具API大规模语言模型工具使用能力Github开源项目
<div align="center"> <h1> 🛠️ToolBench🤖</h1> </div> <div align="center">

对话 对话 对话 对话 对话 对话

</div> <p align="center"> <a href="#model">模型</a> • <a href="#data">数据发布</a> • <a href="#web-ui">网页演示</a> • <a href="#tool-eval">工具评估</a> • <a href="https://arxiv.org/pdf/2307.16789.pdf">论文</a> • <a href="#citation">引用</a> </p> </div> <div align="center"> <img src="https://cdn.discordapp.com/attachments/941582479117127680/1111543600879259749/20230526075532.png" width="350px"> </div>

🔨本项目(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。

✨以下是数据集构建、训练和评估的概览。

<br> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/2b9ebe0a-e6ba-4cf3-b5bc-4c96688b92b3.png" width="800px"> </div> <br>

✨✨特点:

  • API收集:我们从RapidAPI(一个托管大量由开发者提供的真实世界API的平台)收集了16464个具有代表性的REST API。
  • 指令生成:我们精心策划了涉及单工具多工具场景的指令。
  • 答案注释:我们开发了一种新颖的深度优先搜索决策树(DFSDT)来增强LLM的规划和推理能力,这显著提高了注释效率,成功注释了那些无法用CoT或ReACT回答的复杂指令。我们提供的响应不仅包括最终答案,还包括模型的推理过程、工具执行和工具执行结果
  • API检索器:我们整合了API检索功能,为ToolLLaMA提供开放域工具使用能力。
  • 所有数据都是由OpenAI API自动生成并经过我们筛选的,整个数据创建过程易于扩展。
<br> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/abd93e0f-e1f5-44b0-9db2-c3c986cb0097.png" width="800px"> </div> <br>

我们还提供了ToolLLaMA的使用演示

<div align="center">

https://github.com/OpenBMB/ToolBench/assets/25274507/f1151d85-747b-4fac-92ff-6c790d8d9a31

</div>

目前,我们的ToolLLaMA在工具使用方面已达到ChatGPT(turbo-16k)的性能水平。未来,我们将持续改进数据质量并增加对真实世界工具的覆盖范围。

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/ac1d5abf-d00e-4795-bb26-c1769cca3e1a.png" width="300px"> </div>

这里是ToolBench的*旧版本*。

数据

👐ToolBench仅用于研究和教育目的,不应被解释为反映本数据集创建者、所有者或贡献者的观点或意见。它以Apache License 2.0发布。以下是数据的统计信息:

工具数量API数量实例数量实际API调用推理轨迹
3451164641264864695854.0

我们从RapidAPI抓取了16000多个真实世界的API,并策划了涉及这些API的真实人类指令。以下展示了RapidAPI的层次结构和我们的指令生成过程。

<br> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/f93ee7b0-200b-43ed-bf94-60450cb8b5d2.png" width="800px"> </div> <br>

ToolBench包含单工具和多工具场景。多工具场景可进一步分为类内多工具和集合内多工具。我们在所有场景中使用DFSDT方法进行数据创建。以下是使用DFSDT方法进行数据创建过程的示意图:

<div align="center"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/b664de67-4dd5-4df4-9a97-cc28270ad79a.png" width="800px"> </div>

数据发布

请使用以下链接下载我们的数据集:谷歌云盘清华云请注意 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 目录的一些描述:

  • instructionanswer:指令数据和解决方案路径注释数据。G1G2G3 分别指单工具、类内多工具和集合内多工具数据。我们还有一个用于可视化的 Atlas Explorer
  • toolenv:工具环境相关数据,包含 API jsons、API 代码和 API 示例响应。
  • retrieval:此目录包含用于工具检索的数据。
  • test_instructiontest_query_ids:我们从每个测试集中抽取200个实例。test_instruction 目录包含每个测试集的测试查询,test_query_ids 包含每个测试集中测试实例的查询 ID。
  • retrieval_test_query_ids:此目录包含检索器的测试实例查询 ID。
  • toolllama_G123_dfs_train.jsontoolllama_G123_dfs_eval.json:可直接用于训练 toolllama 并复现我们结果的预处理数据。关于预处理详情,我们将 G1、G2 和 G3 数据分别划分为训练、评估和测试部分,并在主要实验中合并训练数据进行训练。

请确保您已下载必要的数据并将目录(例如 data/)放在 ToolBench/ 下,以便以下 bash 脚本可以导航到相关数据。

🤖模型

我们发布了在最新版本数据上训练的 ToolLLaMA-2-7b-v2,以及在 0801 版本数据上训练的 ToolLLaMA-7b-v1ToolLLaMA-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-指令平均值
ReACTClaude-25.53.55.566146.8
Text-Davinci-0031220208.514.52416.5
ChatGPT41.54444.542.546.52240.2
ToolLLaMA25293330.531.52529
GPT453.550.053.567.072.047.057.2
DFSDTClaude-220.53118.51720.52822.6
Text-Davinci-00343.5444637424643.1
ChatGPT54.56560.57571.56264.8
ToolLLaMA57616277776666.7
ToolLLaMA-Retreiver646460.581.568.56567.3
GPT46071.56779.577.57171.1
胜率: (参考模型: ChatGPT-ReACT)
方法模型I1-指令I1-工具I1-类别I2-指令I2-类别I3-指令平均值
-------------------------------------------------------------------------------------------
ReACTClaude-23127.833.83531.547.534.4
Text-Davinci-00328.535.33129.829.84533.2
ToolLLaMA454247.550.841.85547
GPT46058.863.565.860.37864.4
DFSDTClaude-23844.343.336.833.56543.5
Text-Davinci-00340.343.846.840.543.36346.3
ChatGPT60.56257.37264.86964.3
ToolLLaMA5555.354.568.5586960
ToolLLaMA-Retreiver62.3595568.560.87363.1
GPT467.567.866.573.363.38470.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} }

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多