e2b-dev/code-interpreter:把 AI 生成的程式碼丟進雲端沙箱執行的 SDK
Python & JS/TS SDK for running AI-generated code/code interpreting in your AI app
秒懂
- 它是什麼?
- 這個專案提供 Python 與 JS/TS 兩套 SDK,讓你的 AI 應用把模型產生的程式碼送到隔離沙箱裡跑,取回 stdout、結果與圖表。SDK 原始碼已搬到 E2B monorepo,本倉庫留下沙箱模板與圖表資料擷取器。
- 適合誰用?
- 如果你正在做資料分析代理、需要模型反覆執行程式碼並讀回結果,這個 SDK 的 run_code 與 execution.text 介面足夠直接,值得先跑一次官方 README 裡那段 x = 1、x+=1 的範例確認串接。若你的程式碼必須留在自家網路內、或你無法接受執行環境由外部服務建立,就不該採用,因為 Sandbox.create 需要 E2B_API_KEY,沙箱是在雲端開起來的。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 5 天前。
- 用什麼語言寫的?
- 主要是 Python(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
它要解的問題:模型寫得出來,卻沒有地方安全地跑
LLM 產出一段 Python 不難,難的是接下來那一步。把模型寫的程式碼直接丟進你自己的伺服器執行,等於把任意程式碼執行權交給一個你無法預測的輸出。這個專案針對的正是這個斷點:README 開頭寫明 E2B 是一套開源基礎設施,讓你「run AI-generated code in secure isolated sandboxes in the cloud」。目標讀者是正在寫 AI 應用、需要模型執行程式碼並取得結果的工程師,尤其是做資料分析代理的那一群人。倉庫 topics 列出 jupyter、jupyter-notebook、openai、anthropic、cohere、gpt,可以看出它把自己定位在 LLM 工具鏈裡的一環,而不是一個獨立的程式碼執行服務。它不負責生成程式碼,也不負責判斷程式碼對不對,那些留給你的應用層。它處理的是「執行」與「取回結果」這兩件事,並且把執行動作推到一個隔離環境裡。
沙箱是怎麼開起來的:Sandbox.create 與 run_code 的資料流
從 README 的範例可以看出機制的主軸。Python 端先 from e2b_code_interpreter import Sandbox,接著用 with Sandbox.create() as sandbox 建立一個沙箱,然後 sandbox.run_code("x = 1") 執行第一段程式碼,再 sandbox.run_code("x+=1; x") 執行第二段,最後 print(execution.text) 得到 2。這裡有兩個關鍵事實。第一,兩次 run_code 之間狀態是延續的,因為 x 在第一段被賦值、第二段才能 x+=1,這表示沙箱內維持著一個持續的執行上下文,而不是每次呼叫都開一個乾淨的行程。第二,回傳值透過 execution.text 取出,程式碼的執行結果被包成一個 execution 物件,而不是直接回傳字串。JavaScript 端走同一套模型,Sandbox.create() 之後 await sbx.runCode('x = 1'),再 await sbx.runCode('x+=1; x'),用 console.log(execution.text) 印出 2。兩邊的 API 命名刻意對齊,runCode 對 run_code,create 對 create,這對同時維護兩種語言客戶端的團隊有實際好處。README 沒有交代沙箱內部實際跑的是什麼核心、逾時怎麼算、資源上限是多少,這些無法從現有材料確認。倉庫名稱與 topics 都指向 Jupyter,但這只是線索,不是文件陳述。
安裝與啟動:三個指令加一個環境變數
JS/TS 端安裝用 npm i @e2b/code-interpreter,Python 端用 pip install e2b-code-interpreter。注意這是兩個不同的套件名稱,Python 套件在 PyPI 上叫 e2b-code-interpreter,JS 套件在 npm 上叫 @e2b/code-interpreter,不要跟倉庫首頁提到的 e2b 混淆,README 的徽章連到 PyPI 的 e2b 與 npm 的 e2b,那是另一組套件。安裝之後需要 API key:先到 e2b.dev 註冊,再從 dashboard 的 keys 頁面取得,然後設成環境變數 E2B_API_KEY=e2b_***。README 沒有說明 SDK 是否只從這個環境變數讀取憑證,也沒有列出替代的設定方式,所以最穩妥的做法就是照它寫的設環境變數。三個步驟之後就能跑前面那段範例。整個流程沒有本地服務要啟動、沒有 Docker 要裝,這也是它與自架方案最大的體感差異。
SDK 已經搬走了:issue 與 PR 該去哪裡開
這是採用前必須先搞清楚的一件事。README 的 NOTE 明確寫著,@e2b/code-interpreter 與 e2b-code-interpreter 的 SDK 原始碼現在位於 E2B monorepo,路徑是 packages/code-interpreter-js 與 packages/code-interpreter-python,SDK 的 issue 與 PR 要開在那裡。這個倉庫保留的是 sandbox template 與 chart data extractor。對使用者的實際影響有兩層。第一層是找原始碼的時候會撲空,你在這個倉庫裡找不到 run_code 的實作。第二層是修 bug 或提功能請求時,開錯地方等於沒有人會處理。版本編號也反映了這條分岔:最近的 release 清單裡同時出現 @e2b/code-interpreter@2.7.1 與 @e2b/code-interpreter-python@2.9.1,兩個套件的版號並不對齊,JS 在 2.7,Python 在 2.9。如果你的專案同時用兩種語言,不要假設功能與行為完全同步,升級前要看各自的 release。
需要額外套件時:自訂模板是唯一的路
預設沙箱裡有什麼套件,README 沒有列出。它只說,如果你需要額外的套件或不同的 runtime,可以建立自己的 Code Interpreter sandbox 模板,並指向 template/README.md 這份逐步指南,其中也包含如何建置正式環境用的 code-interpreter-v1 模板。這裡的取捨很直接。用預設模板,你得到的是零設定的啟動體驗,代價是套件清單由別人決定,而且文件沒有告訴你清單長什麼樣。要控制環境,就得走模板建置流程,多出一條建置與版本管理的成本。對做資料分析的應用來說,這個決定通常不能拖,因為 pandas、numpy 之外的套件往往才是專案的關鍵依賴。我的看法是,README 在這一塊寫得太輕,把最需要判斷的資訊推給另一份文件,而那份文件的內容不在我手上的材料裡,我無法確認它的完整度。
什麼時候它是錯的工具
第一個明確的邊界是依賴外部服務。Sandbox.create 需要 E2B_API_KEY,沙箱是在雲端開起來的,所以你的程式碼與執行產生的資料會離開你自己的基礎設施。金融、醫療或任何有資料落地要求的場景,這一條就足以否決。第二個邊界是延遲與成本結構。README 沒有提供任何啟動時間、執行時間或計費方式的數字,我無法在這裡給出評估,但可以確定的是,每次建立沙箱都涉及一次遠端資源配置,這跟在本機行程裡 exec 一段程式碼不是同一個量級。如果你的用途只是跑幾行確定安全的字串處理,引入一整套沙箱基礎設施並不合理。第三個邊界是狀態延續這件事本身。範例裡 x 能跨呼叫保留,是因為沙箱還活著,這意味著生命週期管理是你的責任,長命沙箱與短命沙箱的取捨、逾時之後狀態怎麼處理,README 都沒有交代。
替代方案:自建 Jupyter 與它的差別
最直接的替代是自己架一台 Jupyter 或 JupyterHub,把 kernel 當執行後端。兩者的差別在責任歸屬。自建方案裡,隔離、資源限制、清理、逾時全部由你實作,你換到的是資料不出內網,以及對 runtime 與套件的完全控制。這個專案把這些工作包成 Sandbox.create 一行呼叫,代價是控制權與資料位置。另一個常見的替代是直接在應用行程裡用 subprocess 執行,這在單人工具或內部腳本裡很常見,但它沒有任何隔離,模型產生一段刪檔案的程式碼就會真的刪掉。如果你要的是「模型寫、模型跑、模型看結果」這個迴圈,而且可以接受執行環境在雲端,這個 SDK 的介面比自建 Jupyter 少掉大量膠水程式碼。如果你要的是資料主權與環境確定性,自建 kernel 仍然是更合適的起點。倉庫 topics 裡列了 anthropic、cohere、openai,README 也指向 e2b-cookbook 作為搭配不同 LLM 與 AI 框架的範例集,這說明它的設計意圖是當工具鏈的執行層,而不是取代你的代理框架。
維護成本、授權與升級前該看什麼
授權是 Apache-2.0,這是寬鬆授權,允許商用與修改,但我不在這裡給法律建議,你要把授權條款與你們的法務流程對過。維護面上有幾個具體事實值得放進決策。倉庫沒有封存,最後一次 push 是 2026-09-07。SDK 的活躍開發已經移到 e2b-dev/E2B monorepo,所以這個倉庫的變動節奏會偏向模板與圖表擷取器,而不是 SDK 本身。版本節奏可以從 release 清單看出:@e2b/code-interpreter 在 2026-07-23 出 2.7.0,2026-08-13 出 2.7.1,同一天 Python 端出 2.9.1。這是相對頻繁的發布節奏,意味著升級不會是一次性的工作,你要預期定期跟版。升級前該確認的是兩邊套件的版號落差會不會影響你的共用邏輯,以及你的自訂模板是否需要跟著重建。這些都不是可以從 README 直接得到答案的問題,需要你進到 monorepo 的 release 與模板文件裡查。
編輯結論
如果你正在做資料分析代理、需要模型反覆執行程式碼並讀回結果,這個 SDK 的 run_code 與 execution.text 介面足夠直接,值得先跑一次官方 README 裡那段 x = 1、x+=1 的範例確認串接。若你的程式碼必須留在自家網路內、或你無法接受執行環境由外部服務建立,就不該採用,因為 Sandbox.create 需要 E2B_API_KEY,沙箱是在雲端開起來的。動手前先確認三件事:SDK 原始碼已移到 e2b-dev/E2B 的 packages/code-interpreter-python 與 packages/code-interpreter-js,你要對哪個倉庫開 issue;你的執行環境需要哪些額外套件,這決定你是否得走 template/README.md 的自訂模板流程;以及你的資料是否可以離開自有基礎設施。
社群筆記