Documentation Index
Fetch the complete documentation index at: https://dripart-mintlify-e28287af.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
ノード拡張
通常、ノードが実行されると、その実行関数はすぐにそのノードの出力結果を返します。「ノード拡張」は、ノードがグラフ内で自身の代わりに配置されるべき新しいノードのサブグラフを返すことを可能にする、比較的高度な技術です。この技術により、カスタムノードがループを実装できるようになります。簡単な例
まず、ノード拡張がどのように見えるかの簡単な例を以下に示します:model2 を変更しても model1 を再ロードする必要はありません)。
要件
ノード拡張を実行するには、ノードは以下のキーを含む辞書を返す必要があります:result: ノードの出力を含むタプル。これは、通常のノードから返すような確定された値とノード出力の混合である可能性があります。expand: 拡張を実行するための確定されたグラフ。GraphBuilderを使用しない場合は、以下を参照してください。
GraphBuilder を使用しない場合の追加要件
expand キーから期待される形式は、ComfyUI API 形式と同じです。以下の要件は GraphBuilder によって処理されますが、これを使用しないことを選択した場合は、手動で処理する必要があります:
- ノード ID はグラフ全体で一意である必要があります。(これには、リストの使用により同一ノードが複数回実行される場合における、各実行間での一意性も含まれます。)
- ノード ID は、グラフの複数回実行間で決定的かつ一貫している必要があります(キャッシュによる部分的な実行を含む)。
GraphBuilder を使用したくない場合でも(例えば、ファイルからグラフの生 JSON をロードしているためなど)、GraphBuilder.alloc_prefix() 関数を使用してプレフィックスを生成し、comfy.graph_utils.add_graph_prefix を使用して既存のグラフを修正し、これらの要件を満たすようにすることができます。
効率的なサブグラフキャッシュ
サブグラフ内のノードにリテラルではない入力(torch テンソルなど)を渡すことはできますが、これはサブグラフ内部のキャッシュを抑制する可能性があります。可能な場合は、ノード自体ではなくサブグラフオブジェクトへのリンクを渡すべきです。(これを容易に行うために、入力の追加パラメータ内で入力をrawLink として宣言できます。)
関連資料
- サブグラフ(開発者ガイド) — 拡張機能開発者向けのフロントエンドガイド