AI News HubLIVE
站內改寫2 分鐘閱讀

如何在Deep Agents中使用遞迴語言模型

遞迴語言模型(RLM)透過讓代理編寫程式碼將子代理分派到上下文塊上來解決上下文腐爛問題。Deep Agents現在透過動態子代理和輕量級程式碼直譯器支援RLM,允許代理以程式設計方式對大型輸入執行grep、map和reduce操作。在OOLONG基準測試中,RLM在長上下文任務上優於逐輪代理。

遞迴語言模型(RLM)是解決大型語言模型在處理長上下文時出現的“上下文腐爛”問題的一種方法。隨著代理積累越來越多的上下文,其效能會下降。RLM透過讓模型在REPL環境中執行程式碼來排程子代理,並遞迴處理輸入上下文的碎片,而不是依賴單次推理或丟失資訊的摘要。例如,一個代理需要從10,000個銷售通話記錄中找出平均交易規模,使用RLM風格,代理將編排和計數放在程式碼中,而不是模型的臨時上下文視窗中。

Deep Agents已實現對RLM的支援,透過動態子代理和輕量級程式碼直譯器。代理可以編寫指令碼,程式碼直譯器執行它以分派子代理。例如,處理300頁文件時,可以使用Promise.all(pages.map(page => task({...})))模式。與論文中的RLM不同,Deep Agents的實現更接近“遞迴代理”(RA),因為子代理擁有自己的工具和上下文。但論文的啟發至關重要。

使用程式化編排有兩個主要優勢:確定性覆蓋(程式碼保證覆蓋所有批次,而不是依賴模型判斷)和定製編排(管道可以適應任何形狀的任務,包括分支、並行或順序,而不受模型逐輪能力的限制)。

為了測試,我們在OOLONG基準上進行了評估,該基準要求從大量表格資料中聚合資訊。我們使用AgNews資料集,代理需將標題分類並回答計數、使用者和時間相關的問題。在64k token長度下,普通代理和RLM代理表現相近(0.58 vs 0.67),但到了128k token,普通代理得分降至0.44,而RLM代理達到0.79。普通代理在長上下文下經常放棄回答,而RLM代理保持穩定。

開始使用Deep Agents的動態子代理需要安裝QuickJS中介軟體並將CodeInterpreterMiddleware傳遞給create_deep_agent。觸發動態子代理的方法是提示中包含“workflow”一詞。例如,執行一個工作流來審查檔案並總結風險。此外,dcode終端編碼代理內建了程式碼直譯器,無需設定即可試用。

RLM讓根模型能夠自行編寫迴圈來組織上下文。這種思維方式與代理迴圈、驗證迴圈等概念一致。我們很高興看到動態子代理和RLM工作流如何讓代理自主組織上下文和迴圈。

進一步閱讀包括原始論文、Alex Zhang的部落格、Deep Agents影片等。更有興趣瞭解代理實際行為的開發者可以嘗試LangSmith平臺。