知識庫 程式碼
在伺服器上執行程式碼
當程式碼的需求超過了您裝置所能提供的能力時——另一種語言、來自網路的套件、更多時間——Nymbot 可以將其在自己的伺服器上運行,並在專為該次執行而建立的容器中執行。
為了方便起見,此頁面是機器翻譯的。英文原件為適用版本。
什麼是伺服器運行 (server run)
一次伺服器執行會啟動一個全新的容器,將您的程式碼放入其中,執行它,回傳其列印出的內容,並銷毀該容器。在開始之前,您可以看到可能產生的最高費用,而您將從您的... 專業平衡 就其實際運行的時間。
有兩種進入方式: 在伺服器上執行 在程式碼區塊中,且伺服器在其中執行 Nymbot 所要求的內容 儲存庫.
對於不需要從網路獲取任何內容的快速 Python 或 JavaScript,免費的 您裝置上的沙盒 通常就夠了。
執行程式碼區塊
回覆中的 Python、JavaScript、TypeScript、shell、Go、Rust、Java 和 Dart 程式碼區塊具有 在伺服器上執行 按鈕在伺服器執行時皆可用。它會開啟一個顯示以下內容的工作表:
- 這 圖像 程式碼將在以下環境執行,
- 可選擇的時限:1、5 或 15 分鐘,
- 在該時間限制內,消耗 Pro 點數最高可能達到多少?
- 而且,如果對話附帶了檔案,則有一個包含它們的框。只有在您勾選時,它們才會被包含在內。
按下 執行 並且輸出會在程式碼區塊下方隨著抵達而串流顯示: 它所印出的內容、結束代碼、執行時間、它所寫入的任何檔案(每個檔案都附帶一個 儲存 按鈕),以及收取的費用。
停止 在任何時間點結束運行。伺服器會立即關閉,且您只需支付運行期間的費用。若在伺服器啟動前停止,則不收取任何費用。
在一個 匿名模式 聊天執行是從拋棄式 密鑰的 Pro 點數中支付的,且不會包含附件檔案。
語言與圖像
每種語言都運行在一個映像檔上,這是一個包含了該語言所需工具的現成系統。 較大的映像檔運行在較大的伺服器上,且每分鐘的成本也更高。
| 圖像 | 用於 | 它包含什麼 | 伺服器 |
|---|---|---|---|
| Python | Python | Python 3.12 包含 pip、venv、build tools 與 git;已安裝 numpy、pandas 與 pytest | 0.5 CPU, 4 GB 記憶體 |
| Node.js | JavaScript, TypeScript | Node.js 22 以及 npm、pnpm 和 yarn,加上 Python 3、make 和 C++ 編譯器 | 0.5 CPU, 4 GB 記憶體 |
| 通曉多種語言的人 | Shell, Go, Rust, Java | bash、C 與 C++ 建置工具、Python 3、Node.js、Go、Rust (含 cargo) 以及 Java 17 | 1 個 CPU,6 GB 記憶體 |
| Flutter | 飛鏢 | Flutter 3.32 與 Dart | 2 個 CPU, 8 GB 記憶體 |
費用是多少
伺服器時間的計費方式是以 10 秒為一個單位,從請求伺服器到關閉伺服器, 每次運行的最低費用為 10 秒。費率是該規模伺服器的 Nymbot 成本, 加上利潤後,再根據目前的比特幣價格轉換為 Pro 積分。
- 價格會預先顯示,並以最高值呈現。 是以該費率計算整個時間限制。您永遠不會被收取更多費用,且提前完成的行程費用較低。
- 在運行期間會保持最大值。 當結束時,會扣除實際 費用,並退還餘額。
- 無法啟動的執行是免費的。
- 適用支出上限。 一段可能超出聊天範圍的運行 支出上限 先詢問,就像回覆一樣。
由於價格隨比特幣價格波動,它可能會在你看到價格到你按下「執行」的瞬間之間發生變化。如果價格上漲,則不會執行:試算表會再次開啟並顯示新價格供你檢查。
伺服器在儲存庫中執行
在與一個人的對話中 儲存庫 已連接,the 伺服器 運行 chip 讓 Nymbot 可以請求對您的程式碼執行指令,例如在變更後安裝 依賴項目並執行測試。根據 chat 的說明,此功能預設為關閉,直到您開啟為止。
每當模型想要執行某些內容時,回覆會暫停並顯示一張卡片,其中包含圖片、 完整指令、時間限制和最高可能成本,以及在有多個聊天室時指定的是哪個儲存庫。 在您回答之前,不會執行任何操作:
- 允許一次 執行該指令。它針對目前回覆所做的修改後的儲存庫進行執行,模型會取得結束代碼、輸出的末端以及指令所更改的文件列表。接著回覆會繼續執行。
- 拒絕 不運行任何內容,也不花費任何成本。回覆會在其不影響的情況下繼續進行。
每一次執行都會詢問。每一次都會與回覆分開計費,而回覆會列出所進行的執行次數以及各自的費用。如果一次執行超出了對話的 支出上限,在要求你之前,它就已被拒絕了。
在伺服器上執行的指令所產生的檔案會保留在該處,並隨著容器一起被捨棄。 這些檔案不會寫入您的儲存庫。儲存庫的變更僅來自於回覆本身的編輯。
什麼是隔離
- 每次運行都使用全新的容器。 沒有任何內容會與另一個執行過程或其他人員共享,且無論執行成功或失敗,容器都會在執行結束時被銷毀。
- 除了套件註冊表之外,禁止連接網路。 該容器可以從套件來源處進行下載:PyPI、npm 與 yarn、pub.dev 以及 Google 用於 Flutter 和 Dart 的儲存空間、Go module proxy、crates.io、Maven Central,以及用於 git 依賴項和發布版本下載的 GitHub。它只能進行下載,無法向這些地方發送任何內容,也無法連線至任何其他地址。
- 只有你選擇的東西才會進去。 程式碼、您包含的檔案或 儲存庫中的檔案。您的金鑰、您的 git token 以及您的對話內容永遠不會進入 容器中。
- 輸出被視為不可信。 在一個儲存庫中,執行內容所印出的東西 會被標記為外部數據顯示給模型,並告知其絕對不要遵循 其中包含的指令。
限制
- 每個金鑰一次只能運行一個伺服器。在第一個伺服器仍在運行時啟動第二個伺服器會被拒絕。
- 程式碼區塊的時間限制為 1、5 或 15 分鐘。儲存庫執行最多可要求 15 分鐘,若使用 Flutter 映像檔則可達 20 分鐘。
- 最多 1 MB 的程式碼,以及最多 200 個附件,總計 20 MB。
- 一個容量達 60 MB 的壓縮儲存庫。
- 最多 256 KB 的輸出。超過此限制的部分將會被捨棄,且執行程序會進行說明。
- 最多 200 個檔案,總計 8 MB,傳回以儲存。
伺服器運行可以為了維護而關閉,可以整機關閉或一次關閉一個映像檔。當它們 關閉時, 在伺服器上執行 按鈕和晶片沒有顯示。
工作階段窗格
在儲存庫聊天室中,聊天室頂端的檢核清單按鈕會開啟其 任務 面板。它列出了每一輪的操作,由新到舊排序:讀取與編輯的文件、提交、等待您審核的暫存變更,以及每次伺服器執行的指令、映像檔、時間、成本與結束狀態。等待您批准的伺服器執行可以在面板中允許或拒絕(與在卡片上操作相同),正在進行的回覆也可以在那裡停止。工作完成後,大綱會保留在對話中。