在設計代碼執行沙盒時,我們需要考慮其表現形式。目前已經有多個用例的實現示例。例如,谷歌的Bard最近推出了“隱式代碼執行”功能,主要用于解決數學問題。這種方法的核心是對單個輸入計算函數的值并返回結果。由于其無狀態的特性,這種方法能夠以低延遲處理大量請求。
另一方面,ChatGPT會話則可以從有狀態的代碼執行中受益。在這種模式下,用戶可以創建一個完整的項目,包括文件和依賴關系,并在會話中持續獲取輸出。項目可以隨著會話的進行不斷發展,從而減少上下文切換所需的資源。對于這種用例,盡管服務器初始化時間較長,但由于項目會在整個會話中保持狀態,這種延遲是可以接受的。
為了滿足不同用戶的需求,我們開發了這兩種方法的原型,并將沙盒部署在Replit的基礎設施上。Replit已經具備運行不受信任代碼的技術,因此非常適合這一任務。我們還推出了一個自助平臺,供社區進行實驗和探索。
第一種方法是基于無狀態API容器服務器的代碼執行模式。用戶可以通過Replit的自動擴展部署功能輕松實現這一功能。以下是設置API服務器副本的步驟:
evalctl image${Docker_image}
示例命令包括:
evalctl image-python:3
evalctl imagereplco/python-kitchen-sink:latest
如果需要,您還可以打開.replit文件并修改EVAL_FILENAME、EVAL_RUN_COMMAND和EVAL_ENV以適配新的容器。
這種部署方式成本低廉,因為您只需為實際使用CPU的時間付費。有關更多詳細信息,請參考GitHub存儲庫中的完整文檔。
我們曾嘗試開發有狀態的代理環境,但經過實驗后決定暫時不支持這一功能。對于大多數用例,無狀態的代碼執行API已經能夠滿足需求。
隨著大型語言模型的不斷進步,AI代理的能力也在不斷提升。通過結合無狀態和有狀態的代碼執行方法,開發者可以根據自己的需求選擇最適合的解決方案。Replit提供的代碼執行API為社區提供了一個高效、低成本的實驗平臺,幫助開發者更好地探索和實現他們的創意。未來,隨著技術的進一步發展,我們期待看到更多創新的應用場景。
原文鏈接: https://blog.replit.com/ai-agents-code-execution