A comprehensive collection of agent interaction datasets for training and evaluating AI agents across diverse domains and tasks. This dataset aggregates high-quality agent trajectories from various environments including web browsing, code generation, household tasks, knowledge base querying, and software engineering. The dataset is collected through methods described in Agent Data Protocol.
Each dataset configuration provides up to different splits depending on availability:
| Split | Description | File Path |
|---|---|---|
raw | Original unprocessed agent trajectories | {dataset}/full_raw.jsonl |
std | Standardized format with consistent structure | {dataset}/full_std.jsonl |
sft_openhands | Converted to OpenHands agent finetuning format | {dataset}/full_sft/full_sft_openhands.jsonl |
sft_sweagent | Converted to SWE-agent finetuning format | {dataset}/full_sft/full_sft_sweagent.jsonl |
sft_agentlab | Converted to AgentLab finetuning format | {dataset}/full_sft/full_sft_agentlab.jsonl |
Each dataset in the collection follows a consistent structure:
dataset_name/
βββ README.md # Dataset-specific documentation
βββ LICENSE # Dataset-specific license information
βββ full_raw.jsonl # Original raw data format
βββ full_std.jsonl # ADP standardized format
βββ full_sft/ # Agent-specific SFT formats
βββ full_sft_openhands.jsonl # OpenHands agent format
βββ full_sft_sweagent.jsonl # SWE-agent format
βββ full_sft_agentlab.jsonl # AgentLab format
full_raw.jsonl: Contains the original dataset in its native format before any processingfull_std.jsonl: Standardized format following ADP schema with unified action/observation structurefull_sft/: Directory containing agent-specific training formats:
The standardized format (full_std.jsonl) follows the Agent Data Protocol schema. Each example contains:
{
"id": "unique_identifier",
"content": [
{
"class_": "text_observation",
"content": "observation_text",
"name": null,
"source": "user"
},
{
"class_": "message_action",
"content": "agent_message",
"description": "optional_reasoning"
},
{
"class_": "api_action",
"function": "function_name",
"kwargs": {"param": "value"},
"description": "reasoning_for_action"
},
......
],
"details": {}
}
Key Components:
id: Unique identifier for the interaction sessioncontent: Sequential list of actions and observations in the agent trajectorydetails: Additional metadata (typically empty)Please check out the paper for more details.
The SFT (Supervised Fine-Tuning) format (full_sft/*.jsonl) is optimized for training and follows a conversational structure:
{
"id": "unique_identifier",
"system": "system_prompt_defining_agent_behavior_and_available_functions",
"conversations": [
{
"from": "human",
"value": "user_request_or_environment_observation"
},
{
"from": "gpt",
"value": "agent_response_with_function_calls_in_xml_format"
},
......
]
}
Key Components:
id: Same identifier as in standardized formatsystem: Comprehensive system promptconversations: Alternating human/gpt turns representing the full interactionStandardized Format Example:
{
"id": "alfworld_0",
"content": [
{
"class_": "text_observation",
"content": "Here is your task. You are in the middle of a room. Looking quickly around you, you see a armchair 2, a armchair 1, a bed 1, a countertop 1, a diningtable 1, a drawer 2, a drawer 1, a dresser 1, a garbagecan 1, a laundryhamper 1, and a sidetable 1.\nYour task is to: find two laptop and put them in bed.",
"name": null,
"source": "user"
},
{
"class_": "api_action",
"function": "go",
"kwargs": {"location": "\"diningtable 1\""},
"description": "I need to find two laptops and put them in bed. I'll begin by searching the areas that are most likely to have laptops."
},
{
"class_": "text_observation",
"content": "On the diningtable 1, you see a alarmclock 2, a bowl 2, a cd 2, a creditcard 2, a creditcard 1, a laptop 1, a pen 1, a pencil 2, and a remotecontrol 1.",
"name": null,
"source": "user"
}
],
"details": {}
}
SFT Format Example:
{
"id": "alfworld_0",
"system": "You are a helpful assistant that can interact with a computer to solve tasks...",
"conversations": [
{
"from": "human",
"value": "Here is your task. You are in the middle of a room. Looking quickly around you, you see a armchair 2, a armchair 1, a bed 1, a countertop 1, a diningtable 1, a drawer 2, a drawer 1, a dresser 1, a garbagecan 1, a laundryhamper 1, and a sidetable 1.\nYour task is to: find two laptop and put them in bed."
},
{
"from": "gpt",
"value": "<think>\nI need to find two laptops and put them in bed. I'll begin by searching the areas that are most likely to have laptops.\n</think>\n\n<function=bash>\n<parameter=command>\ngo(\"diningtable 1\")\n</parameter>\n</function>"
},
{
"from": "human",
"value": "OBSERVATION:\nOn the diningtable 1, you see a alarmclock 2, a bowl 2, a cd 2, a creditcard 2, a creditcard 1, a laptop 1, a pen 1, a pencil 2, and a remotecontrol 1."
}
]
}
data_filesUse the data_files parameter to load individual SFT files efficiently (downloads only the specified file):
from datasets import load_dataset
# Load $agent specific SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_{agent}.jsonl"
)
# e.g. Load OpenHands SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_openhands.jsonl"
)
# e.g. Load SWE-Agent SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_sweagent.jsonl"
)
# e.g. Load AgentLab SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_agentlab.jsonl"
)
You can also load multiple files at once:
# Load all SFT files for $agent
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="*/full_sft/full_sft_{agent}.jsonl" # Glob pattern
)
import json
from huggingface_hub import hf_hub_download
def download(dataset, local_dir=None):
"""Manually download raw + std + sft files for $dataset."""
for f in ["full_raw.jsonl", "full_std.jsonl", "full_sft/full_sft_openhands.jsonl", "full_sft/full_sft_sweagent.jsonl", "full_sft/full_sft_agentlab.jsonl"]:
try: hf_hub_download("neulab/agent-data-collection", filename=f"{dataset}/{f}", repo_type="dataset", local_dir=local_dir)
except: continue
def load(file_path):
with open(file_path) as f:
return [json.loads(line) for line in f.readlines()]
## Example Usage
download("swe-smith", local_dir=".")
print(load("./swe-smith/full_std.jsonl")[0])
The datasets in this collection were curated through a systematic three-stage pipeline:
{dataset}/full_raw.jsonl.{dataset}/full_std.jsonl.{dataset}/full_sft/*.This dataset collection aggregates data from multiple sources. Each subdataset retains its original license.
Please refer to the LICENSE file in each dataset directory for specific licensing information.
The sources of the datasets are documented in README.md under each dataset's directory.
For questions, issues, or contributions:
We welcome contributions to expand this collection! If you have high-quality agent interaction data that follows our format, please:
If you use this dataset collection in your research, please cite:
@article{song2025agent,
title={Agent Data Protocol: Unifying Datasets for Diverse, Effective Fine-tuning of LLM Agents},
author={Song, Yueqi and Ramaneti, Ketan and Sheikh, Zaid and Chen, Ziru and Gou, Boyu and Xie, Tianbao and Xu, Yiheng and Zhang, Danyang and Gandhi, Apurva and Yang, Fan and others},
journal={arXiv preprint arXiv:2510.24702},
year={2025}
}
A comprehensive collection of agent interaction datasets for training and evaluating AI agents across diverse domains and tasks. This dataset aggregates high-quality agent trajectories from various environments including web browsing, code generation, household tasks, knowledge base querying, and software engineering. The dataset is collected through methods described in Agent Data Protocol.
Each dataset configuration provides up to different splits depending on availability:
| Split | Description | File Path |
|---|---|---|
raw | Original unprocessed agent trajectories | {dataset}/full_raw.jsonl |
std | Standardized format with consistent structure | {dataset}/full_std.jsonl |
sft_openhands | Converted to OpenHands agent finetuning format | {dataset}/full_sft/full_sft_openhands.jsonl |
sft_sweagent | Converted to SWE-agent finetuning format | {dataset}/full_sft/full_sft_sweagent.jsonl |
sft_agentlab | Converted to AgentLab finetuning format | {dataset}/full_sft/full_sft_agentlab.jsonl |
Each dataset in the collection follows a consistent structure:
dataset_name/
βββ README.md # Dataset-specific documentation
βββ LICENSE # Dataset-specific license information
βββ full_raw.jsonl # Original raw data format
βββ full_std.jsonl # ADP standardized format
βββ full_sft/ # Agent-specific SFT formats
βββ full_sft_openhands.jsonl # OpenHands agent format
βββ full_sft_sweagent.jsonl # SWE-agent format
βββ full_sft_agentlab.jsonl # AgentLab format
full_raw.jsonl: Contains the original dataset in its native format before any processingfull_std.jsonl: Standardized format following ADP schema with unified action/observation structurefull_sft/: Directory containing agent-specific training formats:
The standardized format (full_std.jsonl) follows the Agent Data Protocol schema. Each example contains:
{
"id": "unique_identifier",
"content": [
{
"class_": "text_observation",
"content": "observation_text",
"name": null,
"source": "user"
},
{
"class_": "message_action",
"content": "agent_message",
"description": "optional_reasoning"
},
{
"class_": "api_action",
"function": "function_name",
"kwargs": {"param": "value"},
"description": "reasoning_for_action"
},
......
],
"details": {}
}
Key Components:
id: Unique identifier for the interaction sessioncontent: Sequential list of actions and observations in the agent trajectorydetails: Additional metadata (typically empty)Please check out the paper for more details.
The SFT (Supervised Fine-Tuning) format (full_sft/*.jsonl) is optimized for training and follows a conversational structure:
{
"id": "unique_identifier",
"system": "system_prompt_defining_agent_behavior_and_available_functions",
"conversations": [
{
"from": "human",
"value": "user_request_or_environment_observation"
},
{
"from": "gpt",
"value": "agent_response_with_function_calls_in_xml_format"
},
......
]
}
Key Components:
id: Same identifier as in standardized formatsystem: Comprehensive system promptconversations: Alternating human/gpt turns representing the full interactionStandardized Format Example:
{
"id": "alfworld_0",
"content": [
{
"class_": "text_observation",
"content": "Here is your task. You are in the middle of a room. Looking quickly around you, you see a armchair 2, a armchair 1, a bed 1, a countertop 1, a diningtable 1, a drawer 2, a drawer 1, a dresser 1, a garbagecan 1, a laundryhamper 1, and a sidetable 1.\nYour task is to: find two laptop and put them in bed.",
"name": null,
"source": "user"
},
{
"class_": "api_action",
"function": "go",
"kwargs": {"location": "\"diningtable 1\""},
"description": "I need to find two laptops and put them in bed. I'll begin by searching the areas that are most likely to have laptops."
},
{
"class_": "text_observation",
"content": "On the diningtable 1, you see a alarmclock 2, a bowl 2, a cd 2, a creditcard 2, a creditcard 1, a laptop 1, a pen 1, a pencil 2, and a remotecontrol 1.",
"name": null,
"source": "user"
}
],
"details": {}
}
SFT Format Example:
{
"id": "alfworld_0",
"system": "You are a helpful assistant that can interact with a computer to solve tasks...",
"conversations": [
{
"from": "human",
"value": "Here is your task. You are in the middle of a room. Looking quickly around you, you see a armchair 2, a armchair 1, a bed 1, a countertop 1, a diningtable 1, a drawer 2, a drawer 1, a dresser 1, a garbagecan 1, a laundryhamper 1, and a sidetable 1.\nYour task is to: find two laptop and put them in bed."
},
{
"from": "gpt",
"value": "<think>\nI need to find two laptops and put them in bed. I'll begin by searching the areas that are most likely to have laptops.\n</think>\n\n<function=bash>\n<parameter=command>\ngo(\"diningtable 1\")\n</parameter>\n</function>"
},
{
"from": "human",
"value": "OBSERVATION:\nOn the diningtable 1, you see a alarmclock 2, a bowl 2, a cd 2, a creditcard 2, a creditcard 1, a laptop 1, a pen 1, a pencil 2, and a remotecontrol 1."
}
]
}
data_filesUse the data_files parameter to load individual SFT files efficiently (downloads only the specified file):
from datasets import load_dataset
# Load $agent specific SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_{agent}.jsonl"
)
# e.g. Load OpenHands SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_openhands.jsonl"
)
# e.g. Load SWE-Agent SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_sweagent.jsonl"
)
# e.g. Load AgentLab SFT format for $dataset
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="{dataset}/full_sft/full_sft_agentlab.jsonl"
)
You can also load multiple files at once:
# Load all SFT files for $agent
dataset = load_dataset(
"neulab/agent-data-collection",
data_files="*/full_sft/full_sft_{agent}.jsonl" # Glob pattern
)
import json
from huggingface_hub import hf_hub_download
def download(dataset, local_dir=None):
"""Manually download raw + std + sft files for $dataset."""
for f in ["full_raw.jsonl", "full_std.jsonl", "full_sft/full_sft_openhands.jsonl", "full_sft/full_sft_sweagent.jsonl", "full_sft/full_sft_agentlab.jsonl"]:
try: hf_hub_download("neulab/agent-data-collection", filename=f"{dataset}/{f}", repo_type="dataset", local_dir=local_dir)
except: continue
def load(file_path):
with open(file_path) as f:
return [json.loads(line) for line in f.readlines()]
## Example Usage
download("swe-smith", local_dir=".")
print(load("./swe-smith/full_std.jsonl")[0])
The datasets in this collection were curated through a systematic three-stage pipeline:
{dataset}/full_raw.jsonl.{dataset}/full_std.jsonl.{dataset}/full_sft/*.This dataset collection aggregates data from multiple sources. Each subdataset retains its original license.
Please refer to the LICENSE file in each dataset directory for specific licensing information.
The sources of the datasets are documented in README.md under each dataset's directory.
For questions, issues, or contributions:
We welcome contributions to expand this collection! If you have high-quality agent interaction data that follows our format, please:
If you use this dataset collection in your research, please cite:
@article{song2025agent,
title={Agent Data Protocol: Unifying Datasets for Diverse, Effective Fine-tuning of LLM Agents},
author={Song, Yueqi and Ramaneti, Ketan and Sheikh, Zaid and Chen, Ziru and Gou, Boyu and Xie, Tianbao and Xu, Yiheng and Zhang, Danyang and Gandhi, Apurva and Yang, Fan and others},
journal={arXiv preprint arXiv:2510.24702},
year={2025}
}