預設組合
預設組合會將可重用的子圖封裝為一個節點。CodefyUI 內建 lstm_sequence、simple_cnn_classifier 與 training_pipeline 預設組合。你也可以將畫布匯出為預設組合,並在其他圖中使用。
使用預設組合
預設組合會出現在側邊欄節點分頁中、位於節點分類下方的預設組合分類,也會出現在雙擊畫布所開啟的快速搜尋。該分頁的搜尋框同時會比對節點名稱與預設組合名稱。預設組合和分頁中的其他項目一樣,直接拖曳到畫布上即可。放置後,預設組合的行為與其他節點相同。它會暴露子圖內所有未連接的連接埠,以及每個內部節點的所有非 secret 參數。從 Start 拉到已放置預設組合的 Trigger 連線,會啟動預設組合內每個沒有內部連線連入的節點;接在預設組合未暴露之連接埠上的連線則會被拒絕。
若要設定已放置的預設組合,請雙擊該節點,或在節點設定面板或節點詳情中選擇設定內容。設定視窗會列出內部節點,並依節點分組顯示暴露的參數。套用會將選擇的值寫入內部節點。
執行前,圖引擎會將每個預設組合展開為其內部節點。預設組合會封裝節點,但不會增加獨立的執行階段。
可攜式定義
儲存或匯入的圖可以內嵌其使用的預設組合定義。這些定義屬於該圖,因此重新載入登錄資料,或停用提供該預設組合的外掛,都不會移除已開啟圖中的副本。若已安裝的預設組合同名,該圖內的內嵌定義優先;其他圖所見的已安裝面板不受影響。Map 節點是例外:它只會在已安裝的預設組合中尋找 subgraph 參數指定的名稱,因此不會使用內嵌定義;沒有同名的已安裝預設組合時會執行失敗。
儲存與匯出只會包含圖仍有參照的定義,包括只存在於收合區塊內的預設組合。secret 參數值仍只存在於目前 session,不會被寫入可攜式定義、儲存圖或匯出圖。
建立自己的預設組合
匯出預設組合時會包含整張畫布。你不能只選取部分節點,也不能逐項選擇要暴露的內容。請使用只包含該預設組合所需節點的畫布;通常新分頁最簡單。
- 建立子圖。每個未連接的連接埠都會成為預設組合連接埠,因此所需的輸入與輸出都應保持未連接。圖中至少要有一個未連接的連接埠,否則伺服器會拒絕匯出。匯出前請展開所有收合區塊。預設組合不能包含區塊定義,所以伺服器會拒絕含有收合區塊的畫布。
Start節點、其 Trigger 連線與註記都不會放進預設組合;把 Trigger 連線接到已放置的預設組合,就會啟動它。畫布上的預設組合會拆成它內部的節點放進來,並保留在該預設組合上設定的值;已略過的節點則會像執行時一樣被排除。 - 開啟工具列的匯出選單,選擇匯出為子圖,然後輸入名稱。若其他預設組合已使用該名稱,伺服器會拒絕並回傳
409,名稱框會再次開啟,並在輸入框下方顯示原因。 - 伺服器會依資料流動的順序為節點編號,將每個暴露的連接埠命名為
<node>_<port>,並依節點分組暴露所有非 secret 參數;同一種節點型別出現不只一次時會依序編號(Activation 1、Activation 2)。接著,伺服器會寫入預設組合並重新載入面板。此預設組合隨後會出現在節點分頁的預設組合分類與快速搜尋中。
預設組合以 JSON 儲存,包含 preset_name、category(匯出的預設組合為 Custom)、description、tags、nodes、edges、exposed_inputs、exposed_outputs 與 exposed_params。內建的預設組合儲存在 backend/app/presets/。匯出的預設組合儲存在 backend/data/presets/,與已儲存的圖放在一起;設定 CODEFYUI_USER_PRESETS_DIR 可改用其他目錄。這個安裝開啟的每個專案都使用同一個目錄。舊版把匯出的預設組合存放在 backend/app/presets/,這些預設組合仍會從該處載入。匯出的預設組合使用 <name>.json;其檔名為小寫,空格會換成 _。Windows 無法當作檔名儲存的名稱(例如含有 / 或 ?)會被拒絕(請見檔案名稱)。系統沒有重新命名或刪除預設組合的 route 或按鈕。若要移除預設組合,請刪除其檔案並重新載入節點。外掛包也能從自己的 presets/ 目錄提供預設組合。
REST API
| 端點 | 方法 | 說明 |
|---|---|---|
/api/presets | GET | 列出預設組合定義。 |
/api/presets/{name} | GET | 取得單一預設組合定義(未知時回傳 404)。 |
/api/presets/create | POST | 從圖建立預設組合。body 為 {name, nodes, edges, presets?, description?, category?, tags?},且 request 需要 session token;presets 放這張圖自己的預設組合定義,畫布上的預設組合會先依它放進來,其次才是已安裝的預設組合。圖中除了 Start 與已略過的節點之外沒有其他節點(preset_empty)、含有既未安裝也不在 presets 中的預設組合(preset_card_unknown)或類型未安裝的節點(preset_node_unknown)、沒有未連接的連接埠(preset_no_ports)、含有收合區塊,或含有執行時會被拒絕的預設組合或已略過節點(回傳執行時的訊息)時回傳 400。名稱已被使用時回傳 409(preset_exists;檔案已存在時為 preset_file_exists)。帶代碼的拒絕,其 detail 為 {code, ...}。 |
請參閱完整的 API 參考。
:::tip 預設組合 vs 自訂節點 當你想封裝一張由既有節點組成的圖時,使用預設組合。當你需要用 Python 實作新行為時,撰寫一個 自訂節點。 :::