No description
Find a file
2024-02-28 10:05:35 +00:00
anytool clean 2024-02-28 10:05:00 +00:00
assets 1 2024-02-28 09:05:11 +00:00
atb_data 1 2024-02-28 09:05:11 +00:00
misc clean 2024-02-28 10:05:00 +00:00
preprocess clean 2024-02-28 10:05:00 +00:00
scripts clean 2024-02-28 10:05:00 +00:00
toolbench first commit 2024-02-23 15:13:06 +08:00
arguments.py clean 2024-02-28 10:05:00 +00:00
config_example.py clean 2024-02-28 10:05:00 +00:00
LICENSE first commit 2024-02-23 15:13:06 +08:00
openai_utils.py first commit 2024-02-23 15:13:06 +08:00
rapidapi_key_list_example.json first commit 2024-02-23 15:13:06 +08:00
README.md clean 2024-02-28 10:05:00 +00:00
requirements.txt first commit 2024-02-23 15:13:06 +08:00
run_main.sh first commit 2024-02-23 15:13:06 +08:00
server.py first commit 2024-02-23 15:13:06 +08:00

AnyTool

Static Badge

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

🔧 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}
}