大数跨境

Agent 负载与前缀缓存研究数据集:FreeInference Agentic Trace

Agent 负载与前缀缓存研究数据集:FreeInference Agentic Trace 苏哲管理咨询
2026-11-01
21
导读:FreeInference Agentic Trace 是哈佛 MaDSys 发布的大规模人类驱动 Agent 工作负载追踪数据集(CC-BY-4.0),配套论文《From Requests to S
编者摘要:FreeInference Agentic Trace 是哈佛 MaDSys 发布的大规模人类驱动 Agent 工作负载追踪数据集(CC-BY-4.0),配套论文《From Requests to Sessions: A Large-Scale Characterization of Human-Driven Agentic Workloads》。数据集采集 16 周编码类 Agent 真实交互记录,包含 12002 个 Agent 会话、118 万 + LLM 请求、121 万 + 工具调用,覆盖 267 个用户账号与 14 种 Agent 框架(harness)。数据分为 traces、requests、tool_calls 三层,存储为 zstd 压缩 JSONL 与扁平化 Parquet,记录会话时序、TTFT、token 消耗、工具调用、输入突变 mutation 与 16-token 前缀缓存块信息;不开放原始对话文本,仅保留性能与元数据。数据集支持 DuckDB 直接查询与 Hugging Face Datasets 流式加载,专门面向 Agent 推理负载、前缀缓存、调度系统研究。其核心特点是天然保留 Agent 循环链路(用户 - LLM - 工具子 Agent 嵌套),可回放前缀缓存收益;局限是会话按周截断、稀有工具脱敏、token 为 tiktoken 估算值,不适合 Agent 输出质量评估。

10 个研究方向 + 配套分析指标清单

  1. Agent 会话级负载特征刻画
    指标:会话时长分布、单会话 LLM 请求数、单会话工具调用次数、不同 harness 会话长度差异
  2. TTFT 首 token 时延分析
    指标:p50/p90/p99 TTFT,按 harness / 模型 / 会话阶段分组,TTFT 与 prompt 长度相关性
  3. Prefix Caching 前缀缓存性能评估
    指标:缓存命中块数量、缓存 token 节省率、不同 mutation 模式下缓存命中率、缓存块复用距离
  4. Agent 多轮循环行为建模(用户→LLM→工具)
    指标:turn 轮次分布、工具触发请求占比、子 Agent 嵌套深度、会话终止原因分布
  5. 工具调用行为与失败分析
    指标:各工具调用频次、工具失败率、工具执行时延分布、失败工具对应的 token 开销
  6. 上下文增长与输入 Mutation 模式研究
    指标:prompt token 增长曲线,append / 其他 mutation 占比,system/user/tool 角色 token 占比
  7. LLM 推理资源调度与负载仿真
    指标:请求到达间隔、并发请求分布、峰值 QPS、token 吞吐,集群排队时延仿真
  8. 不同 Agent 框架横向对比
    指标:各 harness 的平均工具调用次数、失败率、TTFT、cached token 占比
  9. 长上下文 Agent 会话特性
    指标:超长会话(>N 轮)的缓存收益衰减、长会话工具错误累积效应
  10. 推理成本建模(token 计费)
    指标:单会话总 prompt/completion/cached token,每轮请求 token 成本分布,缓存带来成本下降比例

四、完整 Python 样例

依赖:pip install datasets polars

from datasets import load_dataset
import polars as pl

# ========== 1. 加载数据集(流式,节省内存) ==========
# 加载requests和tool_calls子集,选定某一周分片
ds_requests = load_dataset(
    "harvardMadsys/freeinference_agentic_trace",
    "requests",
    split="week_2026_08_30",
    streaming=True
)
ds_tools = load_dataset(
    "harvardMadsys/freeinference_agentic_trace",
    "tool_calls",
    split="week_2026_08_30",
    streaming=True
)

# 转Polars DataFrame
df_req = pl.from_arrow(ds_requests.data.to_pyarrow_table())
df_tool = pl.from_arrow(ds_tools.data.to_pyarrow_table())

# ========== 2. TTFT统计 p50/p90/p99 ==========
ttft_stats = df_req.select(
    pl.col("ttft_ms").median().alias("p50_ttft_ms"),
    pl.col("ttft_ms").quantile(0.9).alias("p90_ttft_ms"),
    pl.col("ttft_ms").quantile(0.99).alias("p99_ttft_ms")
)
print("==== TTFT统计 ====")
print(ttft_stats)

# ==========3. 缓存命中率(cached token / total prompt token) ==========
cache_stats = df_req.select(
    (pl.col("provider_tokens.cached").sum() / pl.col("provider_tokens.prompt").sum())
    .alias("global_cache_hit_ratio")
)
print("\n==== Token缓存命中率 ====")
print(cache_stats)

# ==========4. 工具调用失败率 outcome != success ==========
tool_fail = df_tool.with_columns(
    fail_flag = pl.col("outcome") != "success"
).select(
    pl.col("fail_flag").mean().alias("tool_fail_rate"),
    pl.col("fail_flag").sum().alias("fail_count"),
    pl.count().alias("total_tool_calls")
)
print("\n==== 工具调用失败率 ====")
print(tool_fail)

# ==========5. 按Agent harness分组统计 ==========
df_req.join(
    df_req.select("session_id","harness").unique(),
    on="session_id"
).group_by("harness").agg(
    pl.col("ttft_ms").median().alias("p50_ttft"),
    pl.count().alias("request_count")
).sort("request_count", descending=True).show()

对比表:FreeInference Agentic Trace vs 同类 Agent Trace 数据集

数据集
来源
核心数据
是否真实用户
是否含 TTFT / 时延
Prefix 缓存信息
原始对话文本
适用场景
局限
FreeInference Agentic Trace
哈佛 MaDSys
12k 会话,1.18M LLM 请求,1.21M 工具调用
✅真实人类用户编码 Agent
✅完整 TTFT、网关时延、token
✅16-token block、mutation,支持缓存回放
❌不开放 message 文本
Agent 推理负载、前缀缓存、调度系统评估
会话按周截断;仅元数据,不能评估回答质量
SWE-bench Traces
SWE-bench
代码仓库修复任务,Agent 轨迹
❌基准任务(自动化)
❌无真实线上时延
❌无缓存块信息
✅任务 + 对话
Agent 代码能力评测、Agent 规划路径
离线 benchmark,不是真实线上负载
Arena Traces(LMSYS)
LMSYS
Chatbot 对战对话轨迹
✅真实用户对话
部分版本含时延
❌无 prefix 缓存元数据
✅对话文本
LLM 偏好、对话质量评估
普通聊天为主,Agent 工具调用较少,缺少工具循环链路
附录  FreeInference Agentic Trace 数据集完整解读

数据集:harvardMadsys/freeinference_agentic_trace(哈佛 MaDSys) 配套论文:From Requests to Sessions: A Large-Scale Characterization of Human-Driven Agentic Workloads核心定位:大规模人类驱动的 Agent 智能体工作负载真实追踪数据集,专门用于研究 LLM 智能体调用、工具使用、前缀缓存(prefix caching)、推理时延特征。

一、数据集总览

基础规模

  • 时间跨度:16 周(2026-05-17 ~ 2026-09-05)
  • 会话:12002 个 Agent 会话,来自 267 个账号、14 种 Agent 框架(harness)
  • LLM 请求:1zzzzzzzz,186,582 次 LLM 调用请求
  • 工具调用:1,213,347 次 tool call
  • 模态:表格 + 文本;存储格式:zstd 压缩 JSONL + 预处理 Parquet
  • 规模区间:1M < n <10M;协议:CC-BY-4.0(可商用,署名)
  • 重点标签:agents、llm-inference、tool-use、prefix-caching、traces

⚠️ 重要限制:没有开放原始对话消息文本,只保留时序、时延、token、工具调用、缓存块元数据。

Agent Harness(智能体框架)

数据里包含 14 种不同 Agent 执行框架,样例中可见:hermes、cline、kilo、claude-code 等,都是代码 / 助理类 Agent,任务以编码为主。

二、数据分层结构(三层核心表)

数据集拆分为 3 个子集:traces/ requests/ tool_calls

  1. traces(会话层,12k 行)
    :一行 = 1 个完整 Agent 会话
  2. requests(请求层,1.22M 行)
    :一行 = 单次 LLM 模型调用
  3. tool_calls(工具调用层,1.28M 行)
    :一行 = 单次工具调用动作

traces 会话字段(顶层)

  • week /day:周分片、日期,数据按周切分
  • session_id /user_id:会话 ID、匿名用户 ID
  • harness:Agent 框架名称
  • start_ms /end_ms:会话起止时间戳(毫秒)
  • requests:数组,包含该会话内按时间序所有 LLM 请求

requests LLM 请求核心字段(最关键,用于推理性能分析)

{
"step":0, "turn_index":0,
"step_trigger":"user/tool",  // 触发来源:用户输入 or 上一轮工具返回结果
"link_reason":null,
"start_ms","end_ms","ttft_ms", // TTFT首token时延,Agent负载核心指标
"model":"glm-5.1", "provider":"B", "stream":true,
"provider_tokens": {"prompt":"总提示token","completion":"生成token","cached":"缓存命中token"},
"role_tokens":{system,user,assistant,tool,tool_definitions}, // 按角色拆分token统计
"n_messages":消息条数,
"tool_definition_names":["read_file","write_file","terminal","execute_code"],
"finish_reason":"tool_calls",
"mutation": 输入变更类型:null/append,刻画会话上下文增量变化,是prefix caching核心
"block_ids": 16-token块ID,用于前缀缓存回放
}

mutation:记录本轮输入相对上一轮的改动,绝大多数 Agent 场景是append 追加,这正是前缀缓存能大幅降成本的根源。 block_ids:输入切分为固定 16token 的块,使用 o200k_basetiktoken 分词,块 ID 仅在单周内局部有效,跨周要增加前缀避免冲突。

tool_calls 工具调用字段

  • call_index、name、category(如 * Interpreter 代码解释器)
  • programs:识别出的程序(python 等)
  • parse_status:工具参数解析成功 / 失败
  • arguments:参数,敏感值做占位替换
  • outcome:工具执行结果(error/success)
  • result_tokens:工具返回内容 token 量
  • latency_ms:工具执行耗时
  • subagent:嵌套子 Agent 会话(支持子智能体递归)

三、数据分片规则

  • Split 按周划分,共 16 个 week 分片,从week_2026_05_17到week_2026_08_30
  • 会话不会跨周:如果一个 Agent 会话跨越周末,会被拆成两个独立会话
  • 每周目录包含:原始 jsonl.zst 会话文件 + manifest.json(被过滤会话及排除理由)
  • 脱敏规则:出现少于 3 个账号的稀有工具名、命令,统一替换为other或占位符,保护隐私

四、典型使用场景(这个数据集的价值)

  1. Agent 工作负载特征分析
    人类真实使用的编码 Agent:多轮循环(用户→LLM→工具→LLM→工具),分析 TTFT、token 分布、上下文增长模式、工具调用频次 / 失败率,论文本身就是做这个。
  2. Prefix Caching 前缀缓存仿真与评估
    内置 16-token block 划分、block_ids、mutation 输入变更信息,可以直接回放缓存命中,复现前缀缓存的收益,评估不同缓存策略在 Agent 负载下的 token 节省、时延下降。
  3. LLM 推理调度、网关、资源规划
    Agent 负载和普通 chat 负载差异极大:长上下文、大量 cached token、工具触发多轮调用;可以用来仿真推理集群负载、排队时延、QoS。
  4. Agent 框架对比
    按 harness 分组,对比不同 Agent 框架(cline/hermes/kilo 等)的调用模式、TTFT、工具失败率、token 消耗,样例 SQL 就是按 harness 统计 p50 TTFT。

五、读取与查询方式

1. DuckDB 直接查询 HF 上 Parquet(无需下载全量)

SELECT
    sessions.harness,
    count(*) AS requests,
    approx_quantile(requests.ttft_ms, 0.5) AS p50_ttft_ms
FROM 'hf://datasets/harvardMadsys/freeinference_agentic_trace/release/*/processed/requests.parquet' AS requests
JOIN 'hf://datasets/harvardMadsys/freeinference_agentic_trace/release/*/processed/sessions.parquet' AS sessions
    USING (session_id)
GROUP BY sessions.harness
ORDER BY requests DESC;

2. HuggingFace datasets 加载

from datasets import load_dataset
# 加载会话trace
traces = load_dataset("harvardMadsys/freeinference_agentic_trace", "traces", split="week_2026_08_30")
# 请求、工具调用,支持streaming流式读取(适合大数据,不占内存)
requests = load_dataset("harvardMadsys/freeinference_agentic_trace", "requests", split="week_2026_08_30", streaming=True)
tool_calls = load_dataset("harvardMadsys/freeinference_agentic_trace", "tool_calls", split="week_2026_08_30", streaming=True)

3. 命令行下载

# 全量下载
hf download harvardMadsys/freeinference_agentic_trace --repo-type dataset --local-dir freeinference_trace
# 只下载单周数据
hf download harvardMadsys/freeinference_agentic_trace --repo-type dataset --local-dir freeinference_trace --include "release/2026-08-30_2026-09-05/*"

六、关键局限

  1. 无原始对话文本
    ,只能做负载 / 性能层面研究,不能做 Agent 提示、内容质量评估;
  2. block ID 仅单周局部有效,跨周做缓存仿真必须加前缀;
  3. token 统计是用 tiktoken o200k_base 算的,不一定等于模型服务商真实分词器;
  4. 会话跨周会被截断,会损失长会话连续性;
  5. 稀有工具被脱敏替换,细粒度工具行为分析受限。

七、引用

@article{freeinference2026requests,
  title={From Requests to Sessions: A Large-Scale Characterization of Human-Driven Agentic Workloads},
  author={Nixon, William and Tian, Muxin and Zheng, Yunjia and Gunawi, Haryadi S. and Yang, Juncheng},
  year={2026}
}




【声明】内容源于网络
0
0
苏哲管理咨询
为企业及组织提供AI+战略、数智化转型咨询及观点、建议等
内容 2437
粉丝 0
苏哲管理咨询 为企业及组织提供AI+战略、数智化转型咨询及观点、建议等
总阅读77.9k
粉丝0
内容2.4k