如何使用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數據集創建等未來實驗。
有關完整代碼和筆記本,請查看原始文章。