CoolFace
Datasetpublic

AmanPriyanshu/tool-reasoning-sft-TOOLS-toolace-sft-tool-use-agent-data-cleaned-rectified

ToolACE - Tool-Use Agent Data Cleaned & Rectified ๐Ÿ‘ฅ Follow the Author Aman Priyanshu Overview This dataset is a cleaned and restructured version of the Team-ACE/ToolACE dataset. ToolACE is a high-quality conversational tool-use dataset containing 11,300+ examples of natural language interactions requiring function calling across diverse domains. This version converts the original OpenAI function-call format into a standardized multi-turnโ€ฆ See the full description on the dataset page: https://huggingface.co/datasets/AmanPriyanshu/tool-reasoning-sft-TOOLS-toolace-sft-tool-use-agent-data-cleaned-rectified.

sourceHugging Faceapache-2.0updated 7mo agoView on Hugging Face
0likes135downloads
Dataset Card

ToolACE - Tool-Use Agent Data Cleaned & Rectified

<div align="center">

๐Ÿ‘ฅ Follow the Author

Aman Priyanshu ![LinkedIn](https://www.linkedin.com/in/aman-priyanshu/) ![Twitter](https://x.com/AmanPriyanshu6) ![Website](https://amanpriyanshu.github.io/)

</div>

Overview

This dataset is a cleaned and restructured version of the Team-ACE/ToolACE dataset. ToolACE is a high-quality conversational tool-use dataset containing 11,300+ examples of natural language interactions requiring function calling across diverse domains. This version converts the original OpenAI function-call format into a standardized multi-turn tool-use conversation structure with explicit reasoning traces, validated JSON tool calls, and proper role transitions.

The restructuring approach is directly inspired by the work of Supriti Vijay, who performed similar cleanup on the DR-TULU SFT dataset. The same structural principles - strict role transitions, proper tag isolation, validated JSON tool calls, and multi-turn conversation formatting - are applied here.

Original Dataset: Team-ACE/ToolACE Format Inspiration: SupritiVijay/dr-tulu-sft-deep-research-agent-data-cleaned-rectified Another Conversion Example: AmanPriyanshu/openresearcher-dataset-sft-deep-research-agent-data-cleaned-rectified


What Changed from Original ToolACE

Original Format (OpenAI Function Call)

The original ToolACE dataset uses OpenAI's function-call format where tool invocations are embedded in assistant responses using bracket notation:

System: [Tool definitions and instructions]
User: What's the weather like in Tokyo?
Assistant: [Weather API(city="Tokyo", units="celsius")]
Tool: {"temperature": 18, "conditions": "partly cloudy"}
Assistant: The weather in Tokyo is currently 18ยฐC and partly cloudy.

New Format (Multi-Turn with Reasoning)

- system: Structured system prompt with JSON tool schemas
- user: What's the weather like in Tokyo?
- reasoning: <think>I need to call the weather API for Tokyo with celsius units...</think>
- tool_call: <tool_call>{"name": "Weather_API", "arguments": {"city": "Tokyo", "units": "celsius"}}</tool_call>
- tool_output: <tool_response>{"temperature": 18, "conditions": "partly cloudy"}</tool_response>
- reasoning: <think>I have the weather data. I can now provide the answer.</think>
- answer: <answer>The weather in Tokyo is currently 18ยฐC and partly cloudy.</answer>

Key Improvements

1. Explicit Reasoning Traces

All conversations now include explicit <think> blocks showing:

  • โ€”Tool selection rationale (why this tool vs others available)
  • โ€”Parameter planning (what arguments to use)
  • โ€”Result interpretation (how to use tool outputs)
  • โ€”Answer synthesis (combining multiple tool results)
2. Standardized Tool Call Format

Before:

[Market Trends API(trend_type="MARKET_INDEXES", country="us")]

After:

xml
<tool_call>
{"name": "Market_Trends_API", "arguments": {"trend_type": "MARKET_INDEXES", "country": "us"}}
</tool_call>

This JSON-based format:

  • โ€”Uses arguments key for consistency
  • โ€”Properly types parameter values
  • โ€”Validates against tool schemas
  • โ€”Follows established tool-use conventions
3. Multi-Turn Conversation Structure

Transformed single-response traces into proper multi-turn conversations:

  • โ€”Each tool call gets its own turn
  • โ€”Reasoning steps are isolated
  • โ€”Tool outputs are clearly marked
  • โ€”Final answer is separated from intermediate steps
4. Updated System Prompts

System prompts were rewritten to:

  • โ€”Define tools using JSON schema format with parameters key
  • โ€”Specify multi-turn interaction patterns
  • โ€”Clarify reasoning and tool-use workflow
  • โ€”Include role transition rules
5. Tag Consistency

Ensured each role contains only its designated tags:

  • โ€”reasoning: Only <think>...</think>
  • โ€”tool_call: Only <tool_call>...</tool_call>
  • โ€”tool_output: Only <tool_response>...</tool_response>
  • โ€”answer: Only <answer>...</answer>
6. Validated Transitions

All role transitions follow valid patterns:

  • โ€”system โ†’ user
  • โ€”user โ†’ reasoning
  • โ€”reasoning โ†’ tool_call OR reasoning โ†’ answer
  • โ€”tool_call โ†’ tool_output
  • โ€”tool_output โ†’ reasoning

No invalid patterns like reasoning โ†’ reasoning or tool_output โ†’ answer.


Schema

Stored as Parquet with native Arrow nested types (messages are list<struct<role: string, content: string>>, not JSON strings).

ColumnTypeDescription
qidstringUnique identifier
questionstringUser query
answerstringFinal answer (extracted from <answer> tags)
num_tool_callsint64Number of tool calls in conversation
num_turnsint64Total number of turns
messageslist[struct]Multi-turn conversation with roles: system, user, reasoning, toolcall, tooloutput, answer
sourcestringDataset source (all "ToolAce")

Message Structure

python
{
  'role': string,    # system, user, reasoning, tool_call, tool_output, answer
  'content': string  # Message content with appropriate tags
}

Use Cases

This dataset is suitable for:

1. Tool-Use Training

  • โ€”Teaching models when and how to call functions
  • โ€”Multi-step tool orchestration
  • โ€”Parameter extraction from queries
  • โ€”Result interpretation and synthesis

2. Reasoning Trace Learning

  • โ€”Explicit <think> blocks showing decision-making
  • โ€”Tool selection rationale
  • โ€”Step-by-step problem decomposition
  • โ€”Error recovery patterns

3. Multi-Turn Conversation Training

  • โ€”Natural turn-taking between reasoning and execution
  • โ€”Proper JSON-based tool call formatting
  • โ€”Iterative refinement patterns
  • โ€”Context maintenance across turns

4. Function-Calling Agents

  • โ€”Diverse tool schemas and domains
  • โ€”Real-world conversation patterns
  • โ€”Natural language to structured calls
  • โ€”Output formatting and presentation

Example Conversation

json
{
  "qid": "toolace_001234",
  "question": "Can you get current BTC price and 24h trading volume for Binance?",
  "num_tool_calls": 2,
  "messages": [
    {
      "role": "system",
      "content": "You are a research assistant. Available tools: get_crypto_price, get_exchange_volume, ..."
    },
    {
      "role": "user",
      "content": "Can you get current BTC price and 24h trading volume for Binance?"
    },
    {
      "role": "reasoning",
      "content": "<think>I need to get Bitcoin price and volume data from Binance. I'll use get_crypto_price first for the current spot price.</think>"
    },
    {
      "role": "tool_call",
      "content": "<tool_call>\n{\"name\": \"get_crypto_price\", \"arguments\": {\"symbol\": \"BTC\", \"exchange\": \"Binance\"}}\n</tool_call>"
    },
    {
      "role": "tool_output",
      "content": "<tool_response>\n{\"price\": 56420.57, \"pair\": \"BTC/USDT\", \"timestamp\": \"2026-02-16T14:23:10Z\"}\n</tool_response>"
    },
    {
      "role": "reasoning",
      "content": "<think>I have the price. Now I need to get the 24h trading volume using get_exchange_volume.</think>"
    },
    {
      "role": "tool_call",
      "content": "<tool_call>\n{\"name\": \"get_exchange_volume\", \"arguments\": {\"symbol\": \"BTC\", \"exchange\": \"Binance\", \"period\": \"24h\"}}\n</tool_call>"
    },
    {
      "role": "tool_output",
      "content": "<tool_response>\n{\"volume_24h\": 98350.214, \"volume_usd\": 5548975138.50}\n</tool_response>"
    },
    {
      "role": "reasoning",
      "content": "<think>I now have both the current price and 24h volume. I can provide a complete answer.</think>"
    },
    {
      "role": "answer",
      "content": "<answer>Current Binance BTC price: $56,420.57 (BTC/USDT). 24-hour trading volume: 98,350.214 BTC (~$5.55B USD).</answer>"
    }
  ]
}

Acknowledgments

This dataset builds directly on the work of the Team-ACE team and their ToolACE project. The original dataset represents substantial effort in creating diverse, high-quality tool-use training data. The structural improvements made here preserve the original content quality while enhancing the format for multi-turn reasoning and tool-use training. The conversion approach draws inspiration from Supriti Vijay's DR-TULU cleaned dataset, whose established conventions for multi-turn tool-use conversations informed this restructuring.


License

This dataset maintains the original Apache 2.0 license from the Team-ACE/ToolACE dataset.


Citation

bibtex
@misc{priyanshu2026toolacecleaned,
  title={{ToolACE: Tool-Use Agent Data Cleaned \& Rectified}},
  author={Priyanshu, Aman},
  year={2026},
  howpublished={\url{https://huggingface.co/datasets/AmanPriyanshu/toolace-sft-tool-use-agent-data-cleaned-rectified}}
}

References

[1] Team-ACE, "ToolACE: Conversational Tool-Use Dataset," 2024. https://huggingface.co/datasets/Team-ACE/ToolACE

[2] Vijay, S., "DR-TULU SFT Data Cleaned Rectified," 2025. https://huggingface.co/datasets/SupritiVijay/dr-tulu-sft-deep-research-agent-data-cleaned-rectified

[3] Priyanshu, A., "OpenResearcher-Dataset SFT DeepResearch Cleaned," 2026. https://huggingface.co/datasets/AmanPriyanshu/openresearcher-dataset-sft-deep-research-agent-data-cleaned-rectified