AI News HubLIVE
站内改写

如何使用AgentTrove:在Python中流式处理170万条代理轨迹并构建干净的ShareGPT SFT数据集

本教程介绍AgentTrove——最大的开源代理交互轨迹集合之一,包含170万条ShareGPT格式的轨迹。通过流式加载避免完全下载,学习标准化代理轮次、提取命令、分析轨迹,并将成功轨迹导出为干净的SFT微调数据集。

文章情报

工程师进阶

要点

  • 使用流式加载处理170万条代理轨迹,无需完整下载
  • 标准化用户、助手、系统和工具消息的对话结构
  • 分析轨迹统计信息并可视化关键模式
  • 导出成功轨迹为ShareGPT风格的JSONL格式,用于监督微调

为什么重要

这条新闻值得关注,因为使用流式加载处理170万条代理轨迹,无需完整下载。

技术影响

可能影响模型选型、推理成本、产品能力和评测基准。

在本教程中,我们将探索AgentTrove,这是最大的开源代理交互轨迹集合之一,并学习如何高效地处理它。我们将使用流式加载来检查行、检测对话模式、标准化代理轮次,并理解用户、助手、系统和工具消息的组织方式。我们还将构建实用程序来解析命令风格的助手输出,以可读格式渲染完整轨迹,并研究代理在不同任务中如何与工具交互。

此外,我们将创建一个轻量级分析工作流程,对数千条轨迹进行采样,将其转换为DataFrame,汇总轮次级统计信息,可视化重要数据集模式,并将成功轨迹导出为干净的ShareGPT风格JSONL格式,用于监督微调。

本教程首先安装必要的库并加载AgentTrove数据集。我们定义了两个关键函数:normalize_turns()将原始轨迹转换为标准化的(角色, 内容)元组列表,其中角色包括user、assistant、system和tool;render_trace()将轨迹格式化为人可读的文本,包含消息数量、总字符数、角色序列以及每轮的前300个字符。

接下来,我们通过从流中采样数千行并计算代理轮次、用户轮次、工具轮次等的统计信息来进行中心极限分析。我们可视化每个轨迹的消息数量分布以及不同来源(如nl2bash、swesmith等)的使用频率,并识别出工具密集的轨迹。

我们定义了一个成功过滤器,只保留标记为resolved、passed、correct或positively rewarded的轨迹。然后我们导出成功轨迹,最多保留200条,输出为agenttrove_clean_sft.jsonl文件。此外,我们还添加了一个搜索功能,允许按关键词或来源查找轨迹,方便探索特定代理任务。

总之,我们建立了一个完整的、可操作的数据管道,用于在Colab中检查、分析、过滤和导出AgentTrove数据。我们从流式访问开始,逐步添加模式检测、轮次标准化、命令提取、轨迹渲染、统计分析、可视化、基于成功的过滤以及关键词或来源搜索。这个工作流程帮助我们理解代理轨迹的内部结构,并为准备高质量子集用于微调或评估提供了可复用的基础。我们还通过避免完整数据集下载和使用流式采样来保持过程的可扩展性。

本教程还演示了如何将AgentTrove视为一个丰富的代理行为、工具使用、任务结果和训练就绪对话的来源,可用于支持代理学习、工作流分析和特定领域SFT数据集创建等未来实验。

有关完整代码和笔记本,请查看原始文章。