深度代理中的直譯器:工具呼叫與沙盒之間的程式碼
深度代理現在支援直譯器:小型嵌入式執行時,代理可在其中編寫程式碼以協調工具、保持工作狀態,並決定哪些內容進入模型上下文。直譯器提供了一種介於序列工具呼叫和完整沙盒之間的中間地帶,使代理能夠表達多步驟工作、將中間狀態保留在模型上下文之外,並以更可預測的方式執行程式碼和操作。
文章情報
要點
- 直譯器位於序列工具呼叫和完整沙盒之間,代理可以在受限能力上獲得程式碼級組合,而無需繼承整個環境。
- 直譯器狀態是第三種上下文表面:訊息歷史用於模型當前推理,檔案系統用於持久工件,直譯器狀態用於尚不需要進入模型輸入的即時工作值。
- 程式化工具呼叫作為中介軟體插入:允許列表中的工具以工具名稱空間形式出現在直譯器內,可與任何模型配合使用,在早期測試中某些任務可減少多達35%的令牌。
為什麼重要
這條新聞值得關注,因為直譯器位於序列工具呼叫和完整沙盒之間,代理可以在受限能力上獲得程式碼級組合,而無需繼承整個環境。
技術影響
可能影響模型選型、推理成本、產品能力和評測基準。
深度代理(Deep Agents)現在加入瞭直譯器特性:一種小型嵌入式執行時,代理可以在其中編寫和執行程式碼。這為代理提供了介於逐個工具呼叫和完整沙盒之間的中間地帶,使其能夠表達多步驟工作,將中間狀態保留在模型上下文之外,並以更可預測的方式執行程式碼和操作。
什麼是直譯器? 直譯器是一個小型嵌入式執行時,代理在工作時可以針對其編寫程式碼。從功能上講,這類似於給代理提供一個Python或Node REPL:它可以定義變數、檢查值、編寫輔助函式,並在多次呼叫中重用狀態。
目前,許多代理已經透過向主機或沙盒環境發出命令來執行程式碼。當任務是環境級工作(如執行命令、安裝依賴或操作檔案系統)時,這非常有用。直譯器則針對不同的層次:代理編寫的程式碼在代理迴圈內執行,用於協調委派、組合工具呼叫、轉換結構化資料,以及決定哪些資訊應返回給模型。
直譯器的定位 當你考慮代理時,通常會想到附加工具。最簡單的代理形式是模型在迴圈中使用工具:模型呼叫一個工具,觀察結果,然後決定下一步。這種一步接一步的風格易於除錯和評估,許多工作流程確實需要即時觀察結果。沙盒在此基礎上透過提供一個bash工具來執行命令、安裝依賴和處理檔案。但兩種方式都有缺點:沙盒可以處理區域性過程,但可能難以擴充套件;純序列工具迴圈在中間步驟主要服務於下一步時顯得笨拙。
直譯器正好填補了這兩者之間的空白。它為代理提供了對受限能力的程式碼級組合,而無需給予整個環境。模型可以編寫一個小程式來表達對現有能力的控制流,同時由控制台決定哪些能力可用。
有意限制的設計 我們稱其為直譯器而非簡單的程式碼執行時,因為它是故意受限的。預設情況下,它不具備正常程式設計環境中的API:沒有檔案系統、網路、shell、包安裝,也沒有即時訪問。代理從基本的控制流和物件操作開始:物件、陣列、對映、JSON等小型語言執行時。
這些能力透過明確的主機執行時橋接暴露。如果代理需要呼叫工具、讀取限定的檔案系統API、獲取URL或委派給子代理,控制台必須有意地暴露這些能力。例如,只有當我們顯式地將fetch、read_file和task工具橋接到直譯器時,以下指令碼才能工作。
主機執行時(與控制台相同)包含代理使用直譯器可以執行的所有操作,並明確決定哪些操作可以被直譯器程式碼呼叫。直譯器是代理在該邊界上的可程式設計側。
直譯器的優勢 直譯器狀態作為一種上下文表面:代理控制台已在多個表面上組織上下文。訊息歷史是模型立即可用的上下文,但代價高昂且受注意力限制。檔案系統為代理提供儲存持久工件、筆記、中間檔案和長期工作記憶的地方,但強制代理將工作狀態序列化為檔案後再重建。直譯器狀態為代理提供了另一個選項:值可以保留在執行時中,作為陣列、物件、對映、計數器、佇列和輔助函式。模型無需將每個中間值視為提示文本,但仍可要求直譯器檢查或重用這些值。
程式化工具呼叫:Anthropic的程式化工具呼叫(PTC)是此模式的另一個版本:工具呼叫從代理編寫的程式碼內部發生,而不是作為模型中介的一系列操作。在深度代理中,PTC作為中介軟體實現,而非模型提供者行為。開發者傳入允許列表,允許列表中的工具出現在全域性tools名稱空間下,每個工具作為非同步函式暴露,直譯器可以使用await呼叫。這意味著你可以為任何模型啟用PTC,包括開源模型。在早期測試中,這種呼叫風格在某些任務上使用的令牌減少了多達35%。
處理大型資料集:對於文件密集型任務,直譯器版本看起來不同。模型可以編寫程式碼,在執行時中保持文件和搜尋狀態,透過程式設計方式迭代批次,評分或過濾候選,僅在選定切片上呼叫子代理。直譯器返回一個緊湊的證據集,而不是將每個中間結果返回給模型。
遞迴編排:另一個相關概念是遞迴語言模型(RLMs),它將長提示視為外部REPL環境的一部分。
總結:直譯器為深度代理提供了新的能力層次,使其在工具呼叫和沙盒之間靈活表達複雜工作流程,同時保持控制和安全。