Python 沙箱
每個對話都擁有一個獨立的 Python 沙箱容器。模型在回答過程中可以自主編寫並執行 Python 程式碼:分析你上傳的資料、繪製圖表、處理表格,甚至生成可下載的 PDF / PPTX / DOCX / XLSX 文件。沙箱與聊天並行執行,檔案在整個對話生命週期內持久儲存。
本頁講使用者可見的行為;沙箱服務本身的部署見 沙箱部署。
模型何時使用沙箱
你不需要任何特殊操作,直接用自然語言提需求即可。模型在遇到下列任務時會自行呼叫程式碼執行工具:
- 數學計算、統計分析;
- 讀取並分析你上傳的 CSV / Excel / 資料檔案;
- 繪製圖表(matplotlib 等,支援中文字型);
- 生成可下載檔案(報告、幻燈片、表格,見下文「文件生成」);
- 多步驟資料流水線(先看資料結構,再計算,再產出檔案)。
一個典型的單條訊息工作流:
你:"分析 data.csv,生成柱狀圖,再製作一份包含該圖表的幻燈片。"
模型在同一輪內依次執行:
python_execute 讀取 /workspace/uploads/data.csv,輸出分析結果
image_generate 渲染柱狀圖,產物自動存入工作區
python_execute 用 python-pptx 把圖表嵌入 slide.pptx
幻燈片以下載卡片出現在回覆末尾
檔案如何進入沙箱
每次程式碼執行前,系統自動把以下內容暫存到沙箱的 /workspace/uploads/ 目錄,模型可以直接按路徑讀取:
| 內容 | 說明 |
|---|---|
| 本對話中你上傳的所有檔案 | 表格、CSV、PDF、圖片等,單個最大 20 MB |
| 本對話中生成的所有圖片產物 | 例如上一步 image_generate 畫出的圖 |
| 你有許可權使用的技能資產 | 位於 /workspace/skills/<name>/,如文件模板 |
因此「上傳檔案、讓模型生成圖、再把圖塞進文件」這類跨工具流水線不需要你做任何中間操作。
執行過程視覺化
程式碼執行以工具呼叫行的形式出現在回覆上方的思考過程面板中(面板互動詳見 對話與模型):
- 行首狀態點:執行中為鼠尾草綠脈衝點,完成為綠色對勾,失敗為紅色警示三角;
- 行尾是即時耗時計數,執行中每秒跳動,結束後定格總時長;
- 點選該行展開:上方是模型編寫的完整 Python 程式碼(等寬字型、可滾動),下方是終端樣式的執行輸出(stdout / stderr)。
長時間的沙箱執行不會表現為空白等待,你始終能看到它在跑、跑了多久、在執行什麼程式碼。
產物:圖表、檔案與資料
寫入沙箱 /workspace/outputs/ 目錄的檔案會成為產物(artifact),在本輪迴復中流式回傳:
| 產物型別 | 展示方式 |
|---|---|
| 圖片(PNG 等) | 直接內聯顯示在回覆中,點選在新標籤頁檢視原圖 |
| 其他檔案(PDF / PPTX / DOCX / XLSX / CSV 等) | 以帶檔名的下載卡片出現在回覆末尾,點選即下載 |
產物永久附著在這條訊息上:重新整理頁面、切換分支、分享對話後仍然可以下載。
文件生成(PDF / PPTX / DOCX / XLSX)
沙箱預裝了完整的文件生成工具鏈,直接向模型提出「生成一份 PDF 報告 / 做一份 PPT / 匯出 Excel」即可:
| 格式 | 生成方式 | 產出特性 |
|---|---|---|
| 模型編寫帶樣式的 HTML/CSS 後轉換 | 排版可控、文字可選中,適合報告 / 簡歷 / 合同 | |
| PPTX(視覺優先) | 每頁以 HTML 設計後截圖,再合成幻燈片 | 版式與設計稿一致,頁面為整頁圖片,文字不可再編輯 |
| PPTX(可編輯) | 程式設計式排版或填充模板 | 文字可編輯;配合管理員提供的模板技能效果更佳 |
| DOCX | 程式設計式生成或模板填充 | 文字可編輯 |
| XLSX | 程式設計式生成 | 支援公式、樣式與資料校驗 |
- 支援視覺能力的模型會在生成後自檢頁面截圖(文字溢位、重疊、截斷),發現問題自動修改再產出,質量明顯更好;不支援視覺的模型一次成型。
- 沙箱內建 CJK 字型,圖表與文件中的中文正常顯示。
- 管理員可以把「文件模板 + 工作流說明」打包成技能,模型生成文件時自動載入,你會在工具呼叫行裡看到
use_skill步驟。
會話工作區:跨輪持久
沙箱是有狀態的計算環境,以對話為單位:
/workspace下的檔案在多次執行之間、多輪訊息之間都保留:上一輪寫出的中間資料、安裝的第三方包,後續訊息可以直接接著用;- 會話中途切換模型,檔案仍然在:沙箱歸平臺管理,與具體廠商無關;
- 每次程式碼執行是獨立程序,變數不跨執行保留,跨步驟傳遞資料請讓模型落盤為檔案(模型自己知道這一點);
- 沙箱容器閒置一段時間(預設 30 分鐘,管理員可調)後被回收,工作區自動歸檔;下次執行時自動恢復,對你完全透明。
提示
管理員可以在後臺的沙箱檢查器(/admin/sandbox)瀏覽與清理任意對話的工作區檔案,排查磁碟佔用問題。
超時與資源限制
| 限制項 | 預設值 | 說明 |
|---|---|---|
| 單次執行超時 | 120 秒 | 超時強制終止本次執行。管理員可在後臺「工具」頁調整,最高可配到 10 分鐘 |
| 文本輸出 | 截斷後回傳 | 超長的 stdout/stderr 會被截斷,避免灌爆模型上下文 |
| 單個產物檔案 | 20 MB | 超限的檔案不會作為產物回傳 |
| 單輪呼叫次數 | 16 次 | 一條訊息內模型最多執行 16 次 Python(深度研究模式為 8 次) |
| CPU / 記憶體 | 容器級限額 | 由部署方配置,防止單對話佔滿宿主機 |
網路訪問
沙箱容器預設與公網隔離(無網路),這是安全基線:模型程式碼不能外發資料、不能訪問內網。
- 需要聯網獲取的內容,由平臺的其他工具代勞:
web_fetch抓網頁、fetch_image把公網圖片下載進/workspace/uploads/供程式碼使用; - 能否
pip install第三方包取決於部署方是否配置了內網 PyPI 映象白名單;沙箱映象已預裝 pandas、numpy、scipy、scikit-learn、matplotlib、openpyxl 等常用資料科學棧,大多數任務開箱即用。
失敗與自動重試
- 容器被回收後執行:系統檢測到會話失效時,自動重建沙箱、重新暫存所有檔案、透明重試,你不會看到任何錯誤;
- 程式碼本身報錯:異常與 stderr 會回傳給模型,模型通常會修改程式碼自行重試(在單輪次數預算內),你可以在思考過程面板裡看到每一次嘗試;
- 執行超時:該次執行被強殺並向模型報告,模型可拆小任務重試。
未配置沙箱時
- 管理員未配置沙箱服務地址時,程式碼執行工具進入安全模式,只能做簡單算術,適合演示與開發除錯;完整能力需要部署沙箱 sidecar,見 沙箱部署。
- 與服務端沙箱互補,AI 回覆中的 Python 程式碼塊右上角有「執行」按鈕,由瀏覽器內的 Pyodide 引擎執行:即點即跑、零後端依賴,輸出按行流式顯示,matplotlib 圖表內聯展示,支援「停止」與超時保護。首次執行需從 CDN 載入引擎(約 12 MB),之後常駐。該路徑同樣預設禁止網路訪問,適合快速驗證模型給出的程式碼片段。