AI 기능

TongFlow의 변환은 이름을 명시한 소수의 백엔드 모델 위에서 돌아갑니다 — “수천 개의 모델”이라는 모호한 약속이 아닙니다. 실제 목록과 각 모델이 쓰이는 곳, 접근 설정 방법을 정리했습니다.

백엔드 모델 (Modal에서 실행)

이 모델들은 Modal 워커 컨테이너 안에서 실행됩니다. MODAL_TOKEN_IDMODAL_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음성 인식과 음성 합성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 그룹화)은 네 곳의 LLM 제공자 중 하나를 거칩니다. 환경 변수로 어느 곳을 쓸지 정합니다:

제공자환경 변수비고
OpenRouterOPENROUTER_API_KEYgen-text의 기본값. 무료 라우팅 티어가 있습니다. 특정 라우트를 고정하려면 OPENROUTER_FREE_MODEL을 추가로 설정합니다.
Google GeminiGEMINI_API_KEY 또는 GOOGLE_API_KEY노드의 모델 슬롯이 Gemini 계열일 때 사용됩니다. 일부 멀티모달 핸들러도 여기에 의존합니다.
OpenAIOPENAI_API_KEY노드의 모델 슬롯이 OpenAI일 때 사용됩니다. 기본 채팅 모델은 gpt-4o-mini입니다(OPENAI_CHAT_MODEL로 변경 가능).
DeepSeekDEEPSEEK_API_KEY몇몇 특정 코드 경로(예: 배치 텍스트 그룹화)에서만 사용됩니다. 메인 gen-text 드롭다운에는 없습니다.

실제로 쓸 제공자만 설정하면 됩니다. 다만 최소 하나는 필요합니다 — LLM 키가 하나도 없으면 스튜디오는 텍스트 생성 변환을 실행하지 않습니다.

변환 호출의 흐름

image-gen-text(“Z-Image로 텍스트 → 이미지”) 노드를 예로 들면:

  1. 캔버스가 노드의 입력(업스트림 텍스트 노드의 출력)을 워크플로 익스포터에 넘깁니다.
  2. 익스포터가 Next.js 작업 API를 호출합니다: POST /api/task/create, 본문은 {feature: "image-gen-text", pluginId, prompt: {text}, nodeId}.
  3. 서버가 Z-Image 워커로 가는 Modal 호출을 큐에 넣고 입력 프롬프트를 전달합니다.
  4. 워커가 이미지를 생성해 base64로 반환하면, 서버가 이를 data/uploads/에 저장된 파일 참조(file_key)로 후처리합니다.
  5. 캔버스의 이미지 노드가 결과로 업데이트됩니다.

모든 변환이 같은 호출 패턴을 따릅니다 — 슬롯 이름과 입력 형태만 다릅니다.

  • Modal은 월 $30의 무료 크레딧을 제공합니다. 대부분의 TongFlow 워크플로에는 충분한 양입니다.
  • 이미지 생성과 TTS는 저렴합니다. 영상 생성(특히 긴 클립)과 4K 업스케일은 비쌉니다 — Modal 사용량 대시보드에서 크레딧이 줄어드는 것이 눈에 띌 것입니다.
  • 확실한 상한이 필요하면 Modal 설정에서 지출 한도를 걸어 두세요.

LLM 비용 참고

  • OpenRouter 무료 티어면 가벼운 텍스트 생성은 충분합니다.
  • 사용량이 많다면 유료 OpenRouter 라우트, Gemini, OpenAI Mini가 보통 호출당 몇 센트 수준입니다.
  • DeepSeek은 저렴하지만 기본값이 아닙니다. 꼭 필요할 때만 켜세요.

모델 목록 확장하기

새 모델(직접 만든 LoRA, 다른 업스케일러, 오픈소스 TTS)을 연결하고 싶다면 tongflow 저장소의 docs/feature-registry.md를 참고하세요. 순서는 다음과 같습니다:

  1. config/tongflow.abi.json에 타입 지정 입력·출력을 갖춘 새 슬롯을 정의합니다.
  2. pnpm gen:abi로 TS 타입을 재생성합니다.
  3. Python SDK(@node_slot 데코레이터 + Pydantic 모델)로 plugins/ 아래에 슬롯을 구현합니다.
  4. pnpm tongflow:publish로 새 SDK 버전을 게시한 뒤, 플러그인을 Modal에 배포합니다.

관련 문서