AI 機能
TongFlow の変換を支えるのは、名前を明記した少数のバックエンドモデルです。「何千ものモデルが使える」といった曖昧な売り文句はありません。ここでは実際のモデル一覧と、それぞれの用途、アクセスの設定方法を説明します。
バックエンドモデル(Modal で実行)
以下のモデルは Modal のワーカーコンテナ内で実行されます。MODAL_TOKEN_ID と MODAL_TOKEN_SECRET を設定しておくと、ランタイムが Modal 経由で呼び出します。
| モデル | 用途 | ノード |
|---|---|---|
| Z-Image | テキスト → 画像 | image-gen-text、image-gen |
| FLUX.2 Klein 9B | 複数リファレンスの融合、画像編集 | image-fusion、image-edit |
| LTX-2 | テキスト / 画像 → 動画、トーキングヘッド | text-gen-video、image-gen-video、image-image-gen-video、audio-image-gen-video |
| SeedVR2 | 画像・動画の超解像 | image-upscale、video-upscale |
| Gemma 4 | マルチモーダルなテキスト理解(画像 / 動画) | image-describe、video-describe、video-gen-text |
| Qwen3 | 音声認識と TTS | transcribe、transcribe-timestamp、text-gen-speech-preset、text-gen-speech-clone、text-gen-speech-instruct、convert_voice |
| ACE-Step | テキスト → 音楽 | gen-music |
アニメーション、キャラクター差し替え、モーション転写(wan-animate-mix、video-image-move-animal、video-image-gen-video-mix)には WAN-Animate のバリアントを使います。スロットの正確な配線は ABI を参照してください。
ローカルなメディア処理
モデルを必要とせず、メディアツールだけで済む処理もあります。実行場所は Modal ワーカー上ですが、学習済みモデルを一切呼ばないという意味で「ローカル」です。
- FFmpeg — トランスコード、ミックス、分離、フレーム抽出(
merge-video-audio、separate-video-audio、extract-audio、get-first-frame、get-last-frame) - シーン検出 —
split-video用のショット境界検出 - 字幕 / ウォーターマーク除去 — 専用ワーカーが処理(
subtitle_remove、remove_watermark)
LLM プロバイダ(テキスト生成とルーティング用)
テキスト生成(gen-text、combine-text のグルーピング)は、4 つの LLM プロバイダのいずれかを経由します。どれを使うかは環境変数で決まります。
| プロバイダ | 環境変数 | 備考 |
|---|---|---|
| OpenRouter | OPENROUTER_API_KEY | gen-text のデフォルト。無料のルーティングティアあり。OPENROUTER_FREE_MODEL で特定のルートに固定できます |
| Google Gemini | GEMINI_API_KEY または GOOGLE_API_KEY | ノードのモデルスロットで Gemini 系を選んだときに使用。一部のマルチモーダル処理も担います |
| OpenAI | OPENAI_API_KEY | ノードのモデルスロットで OpenAI を選んだときに使用。デフォルトのチャットモデルは gpt-4o-mini(OPENAI_CHAT_MODEL で上書き可能) |
| DeepSeek | DEEPSEEK_API_KEY | バッチのテキストグルーピングなど一部のコードパスでのみ使用。メインの gen-text ドロップダウンには出てきません |
設定が必要なのは、実際に使うプロバイダだけです。ただし最低 1 つは設定してください。LLM キーが 1 つもないと、スタジオはテキスト生成系の変換を実行しません。
変換呼び出しの流れ
image-gen-text(Z-Image によるテキスト → 画像)ノードを例にします。
- キャンバスが、ノードの入力(上流のテキストノードの出力)をワークフローエクスポーターに渡します。
- エクスポーターが Next.js のタスク API を呼びます:
POST /api/task/create、ボディは{feature: "image-gen-text", pluginId, prompt: {text}, nodeId}。 - サーバーが Z-Image ワーカーへの Modal 呼び出しをキューに入れ、入力プロンプトを渡します。
- ワーカーが画像を生成して base64 で返し、サーバーがそれをファイル参照(
file_key)に後処理してdata/uploads/に保存します。 - キャンバス上の画像ノードが結果で更新されます。
どの変換もこの同じパターンで動きます。違うのはスロット名と入力の形だけです。
Modal のコストについて
- Modal は月 30 ドルの無料クレジットを提供しています。ほとんどの TongFlow ワークフローには十分な枠です。
- 画像生成と TTS は安価です。動画生成(特に長尺)と 4K アップスケールは高くつき、Modal の使用量ダッシュボードにはっきり表れます。
- 上限を確実に守りたい場合は、Modal の設定で支出制限をかけてください。
LLM のコストについて
- OpenRouter の無料ティアで、軽めのテキスト生成はまかなえます。
- テキストを多く使う場合でも、OpenRouter の有料ルート、Gemini、OpenAI Mini なら 1 回あたり数セント程度が目安です。
- DeepSeek は安価ですがデフォルトではありません。明確に必要な場合だけ有効化してください。
モデルの追加
新しいモデル(自作の LoRA、別のアップスケーラー、オープンソースの TTS など)をつなぎたい場合は、tongflow リポジトリの docs/feature-registry.md を参照してください。手順は次のとおりです。
config/tongflow.abi.jsonに、型付きの入出力を持つ新しいスロットを定義します。pnpm gen:abiで TypeScript 型を再生成します。plugins/配下に Python SDK でスロットを実装します(@node_slotデコレータ + Pydantic モデル)。pnpm tongflow:publishで新しい SDK バージョンを公開し、プラグインを Modal にデプロイします。
