3.3 KiB
AnyTool
This is the implementation of the paper AnyTool: Self-Reflective, Hierarchical Agents for Large-Scale API Calls

🔧 Installation
✅ Dependencies
Require Python 3.9+
🚀 Quick install
pip install -r requirements.txt
🔆 Preparation
OPENAI API config and the ToolBench key
Fill your OpenAI GPT-4 API config and toolbench key into the config.py (see config_example.py).
Fill out the form to get the toolbench key.
ToolBench
Download the ToolBench data using the following link: Google Drive or Tsinghua Cloud.
The file structure is as follows:
├── /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/
For more details, please refer to ToolBench.
Prepare the API data
You should prepare the ToolBench data first. Make sure you have the directory of data/toolenv/tools
export PYTHONPATH=./
python scripts/extract_api_details.py
python scripts/extract_category_tool_details.py
python scripts/extract_tool_database.py
AnyToolBench
Generation script
export PYTHONPATH=./
python scripts/anytoolbench_generation.py --output_path atb_data/anytoolbench_new.json
We provide sample data in anytoolbench.json file.
🚗 Run AnyTool
Fill your OpenAI GPT API config and toolbench key into the config.py (see config_example.py). We use Azure OpenAI for all our experiments. You can modify it according to your own configuration.
Experiment on ToolBench, take G1-I as an example.
export PYTHONPATH=./
python scripts/main.py --output_dir result/test_instruction/G1_instruction --query_path data/test_instruction/G1_instruction.json --max_api_number 64
Experiment on AnyToolBench
export PYTHONPATH=./
python scripts/main.py --output_dir result/anytoolbench --query_path anytoolbench.json -max_api_number 64
👨🏫 Acknowledgement
This repo is built on ToolBench.
📑Citation
If you find this project is helpful for your research, consider citing our paper
@article{du2024anytool,
title={AnyTool: Self-Reflective, Hierarchical Agents for Large-Scale API Calls},
author={Du, Yu and Wei, Fangyun and Zhang, Hongyang},
journal={arXiv preprint arXiv:2402.04253},
year={2024}
}